Please open Telegram to view this post
VIEW IN TELEGRAM
Cododel.dev | Александр
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1😁1
С какими из базовых принципов программирования знакомы?
Anonymous Poll
71%
Чистый код
14%
DRY
7%
KISS
0%
YAGNI
29%
SOLID
29%
🌝 Я не программирую 🌚
Media is too big
VIEW IN TELEGRAM
С чего стартовать в веб разработке на фрилансе
[Для тех, с кем в личке и комментах обсуждали]
Я уже рассказывал, что люблю иногда брать такие заказы под тильду, чисто на JS
С правками, где предыдущий разработчик не справился - вообще в идеале
Чаще всего такие заказы попадаются от дизайнеров, которые сами и делают сайт на тильде.
Задачи либо не стандартные, либо очень простые, и для их выполнения достаточно продвинутых базовых знаний и хорошего понимания как работает верстка в браузере.
Конкретно в этом случае - сделали ZeroBlock, который выступает в качестве слайдера, но в арабской версии, где актуален RTL, справа нужен отступ, который не будет реализован или описан, наверное, ни в одном гайде.
Так что, считаю - хороший вариант для старта, можно многому научиться и получить постоянных заказчиков)
Видео записывал для клиента и чтобы самому убедиться, что все сделано правильно, по этому без контекста, четко и по делу.
В моих исправлениях использованы принципы:
«Чистый код» - без комментариев, но в виде названий переменных, классов и функций
«DRY» и «SOLID» - в виде хелперов и вынесенной логики в функции
«KISS» - просто не применен, так как тут можно просто в потоке оставить было не повторяющуюся логику, не вынося в функции, добавив комментарии
«YAGNI» - частично нарушен (см “KISS”)
Смотрим пример выполненной работы.
В комментах оставлю скрин с ответом заказчика
[Для тех, с кем в личке и комментах обсуждали]
Я уже рассказывал, что люблю иногда брать такие заказы под тильду, чисто на JS
С правками, где предыдущий разработчик не справился - вообще в идеале
Чаще всего такие заказы попадаются от дизайнеров, которые сами и делают сайт на тильде.
Задачи либо не стандартные, либо очень простые, и для их выполнения достаточно продвинутых базовых знаний и хорошего понимания как работает верстка в браузере.
Конкретно в этом случае - сделали ZeroBlock, который выступает в качестве слайдера, но в арабской версии, где актуален RTL, справа нужен отступ, который не будет реализован или описан, наверное, ни в одном гайде.
Так что, считаю - хороший вариант для старта, можно многому научиться и получить постоянных заказчиков)
Видео записывал для клиента и чтобы самому убедиться, что все сделано правильно, по этому без контекста, четко и по делу.
В моих исправлениях использованы принципы:
«Чистый код» - без комментариев, но в виде названий переменных, классов и функций
«DRY» и «SOLID» - в виде хелперов и вынесенной логики в функции
«KISS» - просто не применен, так как тут можно просто в потоке оставить было не повторяющуюся логику, не вынося в функции, добавив комментарии
«YAGNI» - частично нарушен (см “KISS”)
Помните, что эти принципы - это не законы, а руководства, которые помогают вам писать лучший код.
Смотрим пример выполненной работы.
В комментах оставлю скрин с ответом заказчика
🔥1
У нас новый чат
Там буду подсказывать, помогать и проводить личные созвоны под запись, с разбором разных тем🔥
Там буду подсказывать, помогать и проводить личные созвоны под запись, с разбором разных тем
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Альянс Web Разработчиков
Привет, это сообщество разработчиков и фрилансеров.
Тут действует принцип взаимопомощи, так что не стесняйся задавать вопросы, или помогать другим.
А ещё ожидаются интересные мероприятия 🤫
Тут действует принцип взаимопомощи, так что не стесняйся задавать вопросы, или помогать другим.
А ещё ожидаются интересные мероприятия 🤫
• Что такое DRY?
Если по-русски, то “Don’t Repeat Yourself”
(Не поворяйся!)
Вкратце - это значит, что нужно стараться не допускать дублирования кода, и, выносить повторяющуюся логику по мере необходимости.
К примеру для этого во многих проектах и фреймворках есть Helpers, да и в целом сами библиотеки и фремворки не только ускоряют работу, но и решают множество других задач, в том числе DRY
• Зачем он нужен?
Дублирование кода усложняет поддержку и доработку проекта.
Если изменить логику такого блока - придется вспомнить и изменить все остальные дубли, где эта логика исопльзовалась.
• Как его применять?
Выше я уже описал пример с хелперами - можно писать свои. Это у нас - создание функций, содержащих повторяющуюся логику, не влияющую на окружение.
А еще это может быть использование циклов или других структур, например - классов и их наследования.
• Пример
Функции на скринах взаимодействуют с апи, а соблюдая DRY - еще и создают удобный интерфейс апи.
На первом и втором узображении функции созданы в целях соблюдения DRY.
Но внутри самой функции на первом скрине - этот же принцип и нарушен, так как если в проекте есть другие запросы - придется дублировать логику самого запроса в новые функции.
На втором скрине абсолютно тот же запрос, но логика запроса вынесена в отдельную функцию.
А на третьем скрине - та самая логика, которая покрывает POST и GET запросы, внутри которых снова используется принцип DRY, и они служат лишь интерфейсом для запроса, который исоплняется только в функции request.
• Исключения
Важно помнить, что это не панацея и не строгое правило.
Иногда дублирование кода может быть оправдано, если это делает код более понятным или упрощает его.
Главное не переусердствовать и четко понимать, почему сейчас нужно применить или нарушить этот принцип.
Не, ну посмотрите, какая маленькая, аккуратная и понятная функция на втором скрине)
Да post и get функции тоже приятные.
Главное не найти дублирования в request - это предел, дальше все резко ухудшится
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Тестирование Tinkoff кассы
Недавно потребовалось протестировать тинькофф кассу, и вспомнил, что у меня есть простенький скрипт!
Но в репозитории осталась ошибка, он не отправлял токен кассы.
Я исправил ее, но мне этого оказалось мало, и я переписал пол проекта (как всегда... 😆)
Теперь он выглядит так (глядеть скрин)
🖼️ GitHub
🖱 GH Pages
Недавно потребовалось протестировать тинькофф кассу, и вспомнил, что у меня есть простенький скрипт!
Но в репозитории осталась ошибка, он не отправлял токен кассы.
Я исправил ее, но мне этого оказалось мало, и я переписал пол проекта (как всегда... 😆)
Теперь он выглядит так (глядеть скрин)
Please open Telegram to view this post
VIEW IN TELEGRAM
Хочу просто чтобы вы увидели, как нужно писать запрос нейросети, чтобы получить качественный ответ.
• Задача
Расчитать заранее уровень цены и размер позиции для усреднения покупки по мартингейлу в трейдинге.
При этом заранее определяется:
— Рабочий бюджет (сколько готов потратить на покупку актива)
— Процент коррекции (на сколько должна упасть цена, когда пора докупать)
— Множитель (на соклько должна быть умножена предыдущая покупка)
— Количество усреднений (максимльное количество докупок)
— Текущая стоимость (от нее расчитывается падения)
• Смотрим скрины
На них запрос, и ответ от GPT-4 от Bing (с включенным поиском по сети)
+ бонусом объяснение полученного скрипта от нейросети
+ бонусом от меня применение данного скрипта в Google Sheet (Написал в AppsScript логику, которая автоматически все расчитывает на лету)
• Важно
Главное быть последовательным и дать максимально подробную задачу, с как можно меньшим количеством неизветсных.
В целом точно так же как и джуну
Только в случае с нейросетью - она с большей вероятностью выдаст лакончиное решение без вложенных цикллов, а значит более качественное
• Минусы
Ну а с другой стороны - тут чуть ли не синьор должен составить ТЗ
А так же только разработчик высокого ранга сможет оценить эффективность рещения.
Но это все равное ускорит ему работу, если нужно продумать формулу или алгоритм.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Я решил с нейросетями ознакомиться
Поигрался немного с YOLO тут
Подробнее о моем способе обучения:
• Выбираю интересующую тематику
• В режиме песочницы пробую технологию
• Придумываю под нее проект
• Реализую
• Иду на фриланс решать задачу другим людям
Текущая цель: Нейросеть для решения цифровой капчи
Шаги:
• Начал с того, что посмотрел несколько простейших видосов по нейросетям на широкую аудиторию
Раз, Два, Три, Четыре
• Затем создал Google Collaborotory документ, в котором по Usage из документации попробовал обучить сетку на стандартном датасете и скормить подходящие под мою задачу входные данные, для чего наскринил несколько окон ReСaptchaV2 с официального DEMO
• Когда получилось завести это дело - попробовал поиграться с предренированными моделями разных размеров, посмотрел как оно работает, используя OpenCV для наложения боксов на распознанные сущности в изображении при помощи rectangle и putText методов, которые подсмотрел в Google Gemini (GPT)
• Наигравшись чуть поискал более удобные способы разметки, и нашел на HuggingFace пример современного решения с использованием SuperVision, что сильно сократило и упростило реализацию визуальной разметки определенных сущностей на изображении.
• С этого момента ключевая логика работы с нейросетями по классификации, отслеживанию и детектингу, так что следующим этапом - выбрал ресурс, для которого, в теории, получится применить разрабатываемую нейросеть, и приступил к написанию парсера и сбора датасета изображений капчи.
Спускаемся в комментарии за продолжением
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем тему с нейронками?
Там приличный лонгрид накопился🤓
Немного оффтоп, по этому в комментах
Там приличный лонгрид накопился
Немного оффтоп, по этому в комментах
Anonymous Poll
86%
Поехали 🖥
0%
Предложу другую тему в комментах
14%
Гляну результаты
Нашел баг в FilamentPHP
Сегодня будет уже третий день ресерча 😃
Проблема в несогласованности логики валидации файлов на фронтенде и бекенде
Уже пообщался с опытным разработчиком одного из медиа плагинов в дискорде [ENG]
Он сомневается, что это баг
Но все указывает именно на это
В том числе он говорит что расширение файла никак не связано с его mime type, но мне удалось выяснить обратное, в случае с тем как браузер определяет mime type
Так что ещё подумаю, может сделаю пулл реквест, я уже придумал более менее адекватное решение
А там расскажу детальнее
🖼️ Дискуссия на GitHub
Сегодня будет уже третий день ресерча 😃
Проблема в несогласованности логики валидации файлов на фронтенде и бекенде
Уже пообщался с опытным разработчиком одного из медиа плагинов в дискорде [ENG]
Он сомневается, что это баг
Но все указывает именно на это
В том числе он говорит что расширение файла никак не связано с его mime type, но мне удалось выяснить обратное, в случае с тем как браузер определяет mime type
Так что ещё подумаю, может сделаю пулл реквест, я уже придумал более менее адекватное решение
А там расскажу детальнее
Please open Telegram to view this post
VIEW IN TELEGRAM
Если кто занимается frontend разработкой, или как-то с ней связан - накидал простой старткит для NuxtJs с Radix-Vue и TailwindCSS на борту, с Bun
И написал bash скрипт, который самостоятельно создает ветку gh-pages, копирует в нее все зависимости, вносит нужные изменения в nuxt.config.ts, билдит проект, удаляет из ветки все лишнее и пушит ветку.
При этом используя существующую директорию node_modules между ветками, не делая с ней никаких операций, что сильно ускоряет процесс, исключая работу с десятками тысяч файлов в ней.
Но если она отсутствует, то автоматом установит все зависимости в master ветке и переиспользует ее в в новой ветке.
После деплоя вернет все как было и переключится обратно на master ветку.
Штука удобная для демо в разработке продукта или деплоя статического сайта)
Подойдет так же для лендингов, так как для Github Pages можно установить собственный домен, хостинг в таком случае будет бесплатным.
Плюс это бесшовное обновление со сбросом кешей
На самом деле это просто делается, не на каждом проекте пригодится, но ознакомиться рекомендую
После запуска скрипта потребуется только единоразово указать ветку gh-pages в настройках репозитория, во вкладке Pages
И при желании можно автоматизировать деплой и отказаться от ветки gh-pages
Нужно лишь немного переписать скрипт, убрав работу с ветками, а затем добавить конфиг Github Actions с bun образом
Тогда при пуше в ветку master - через 40 секунд деплой будет окончен
🔗 Репозиторий
🔗 Github Pages DEMO
🔗 Github Gist со скриптом
Как работает скрипт деплоя рассказал в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
Media is too big
VIEW IN TELEGRAM
Взлом Hamster Kombat 🐹
Что ещё поковырять?👽
Что ещё поковырять?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Рубрика «Колхоз» 👨🌾
Роутер старенький, но из топ сегмента, с 5GHz WiFi
А ещё стал перегреваться, жарковато в +30°C
Так что пришлось заменить термоинтерфейс (термопрокладки) и пассивное охлаждение сделать активным
Через понижающий модуль подцепил 12в кулер на вход 19в после кнопки включения.
В корпус не вместилось, но стоит он у меня далеко, да и хрен с ним, главное чтобы не вырубался от перегрева🤡
Роутер старенький, но из топ сегмента, с 5GHz WiFi
А ещё стал перегреваться, жарковато в +30°C
Так что пришлось заменить термоинтерфейс (термопрокладки) и пассивное охлаждение сделать активным
Через понижающий модуль подцепил 12в кулер на вход 19в после кнопки включения.
В корпус не вместилось, но стоит он у меня далеко, да и хрен с ним, главное чтобы не вырубался от перегрева
Кайф когда в городе есть магазин радиодеталей, съездил, купил
Раньше жил в небольшом городе, нудно было ждать минимум две недели с Китая, либо час в одну сторону в соседний город
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Cododel.dev | Александр
YOLOv10 обучена на 705 изображениях, аугментированных до 1701 изображений, размером в 640x640
На скрине результат ее работы с моего скрипта
Изображения выборкой из собранного датасета более чем в 75 000 штук
Для теста выбраны рандомные
На инференс одного изображения уходит 0.3-1ms прямо на процессоре ноута с M1, без подключения тензорных ядер и графических вычислений
Есть препроцессинг еще 90-130ms, пока разбираюсь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1