DEV: Рубиновые тона
3.34K subscribers
153 photos
2 videos
8 files
1.03K links
Анонсы новых видео о программировании (Ruby/Rails, Solidity/Ethereum, Python, JS и не только), практические советы, обзор полезных инструментов и новости из мира IT
Download Telegram
И вновь немного новостей для любителей чего-нибудь поскрейпить. Тут сегодня официально вышла новая очень классная фича Fast Search API, которая позволяет за один запрос к API буквально за секунду вытащить поисковые результаты и всякие связанные новости. Я поигрался с этой штукой пару дней, работает реально надёжно и шустро.

Так что можно глянуть мой пост, там сразу и примеры кода есть, можно легко потестить с бесплатным аккаунтом https://www.scrapingbee.com/blog/fast-search-api/
❤‍🔥7🔥3👍2
Немного апдейтов для тех, кто балуется настройкой всяких прокси и VPN. Попробовал добавить в sing-box поддержку достаточно нового протокола hysteria2 - в общем, полёт нормальный. Требуется домен и сертификат для него, можно как обычно сделать автообновление через certbot. Эта штука ходит по UDP, считается надёжной. Примерно такой конфиг:

{
"type": "hysteria2",
"tag": "hy2-in",
"listen": "::",
"listen_port": 443,
"users": [
{
"name": "name",
"password": "123"
}
],
"tls": {
"enabled": true,
"server_name": "example.com",
"certificate_path": "/etc/letsencrypt/live/example.com/fullchain.pem",
"key_path": "/etc/letsencrypt/live/example.com/privkey.pem"
}
}


Кстати, тут ещё меня попросили помочь с telegram и его прокси - тот же singbox нормально поддерживает socks5, можно сделать

{
"type": "socks",
"tag": "tg-socks",
"listen": "::",
"listen_port": 1081,
"users": [
{
"username": "name",
"password": "123"
}
]
}


и далее просто в настройках клиента добавить custom proxy
1812
Вернулся тут немного к относительно старому проекту на Elixir, подумал заменить HTTPosion на более современный Finch и отказаться от кассет в автотестах (exvcr) - вместо этого использовать Mox с заглушками. Кассеты, конечно, дело неплохое, но их на каждый чих перезаписывать, да и они бывает гигантские становятся в зависимости от ответа сервера.

Ну пока полёт нормальный, оказалось что в логике менять мало что нужно. Самая большая проблема, конечно, это апдейт тестов. Пока как-то так выходит https://github.com/lokalise/elixir-lokalise-api/pull/57 😂
6
Разбираем способы скрыть свой IP и типичные мифы, которые с этим связаны (плюс подходы, которые кажутся сомнительными). В общем покрывается множество тем, так что поделитесь с теми, кто не особенно "в теме" https://www.scrapingbee.com/blog/how-to-hide-ip-address/
👏1
🚀 Интенсив по вайбкодингу в стиле JTBD: сделай продукт с нуля за 8 недель

Стартуем 15 марта с Алексеем Аметовым — предпринимателем и исследователем ИИ. Пройдём путь от гипотезы и JTBD до релиз-реди MVP с базой данных, логином и AI-фичами.

Кому: фаундерам, разработчикам, дизайнерам и тем, кто хочет быстро проверять идеи кодом, минуя найм команды.

Как устроено: 8 недель, живые стримы с наставником, домашки с обратной связью.
Каждый модуль — видимый результат:
— Прототип в AI-песочнице → CRUD → регистрация → агентские функции → тесты → деплой.
— Итог: готовый веб-сервис (mobile/desktop) и навык «придумал → сделал → запустил».

После курса:
— Доступ в обучению и комьюнити Guide DAO.
— Регулярные стримы с экспертами: ежедневные лайвкодинги и AMA, чтобы получать самые актуальные знания в быстро меняющейся сфере.
— Новый курс по вайбкодингу на платформе

По промо-коду KRUK скидка -40% на guidedao.xyz до 15 марта

🔥Работающее приложение за один стрим

В пятницу в 19:00 (UTC+3)
проведём бесплатный стрим с Алексеем Аметовым. Завайбкодим классический Тетрис от пустой папки до работающей игры, расскажем о программе и ответим на вопросы.

📍 Ссылка для подключения в нашем боте: @GuideDAO_hallo_bot (пришлём за 5 минут).

Приходи смотреть, как AI превращает идеи в код, и забирай свой первый продукт через 8 недель. 🤖
🔥9🌚43👎21
В этом видео пошагово показываю, как поднять свой прокси-сервер на Linux с помощью sing-box.
Настроим VLESS, Hysteria2 и SOCKS (для Telegram), а также разберём настройку клиентов.

Все делается через команды в терминале. После просмотра у тебя будет полностью рабочий прокси сервер, который можно использовать для своих устройств. https://www.youtube.com/watch?v=5_67h-HjwfA
3217👍1
Я тут готовлю статью по теме прокси выше, пару команд уточнил заодно.

Sing-box ставится теперь попроще, в частности:

sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc
sudo chmod a+r /etc/apt/keyrings/sagernet.asc


И затем

echo '
Types: deb
URIs: https://deb.sagernet.org/
Suites: *
Components: *
Enabled: yes
Signed-By: /etc/apt/keyrings/sagernet.asc
' | sudo tee /etc/apt/sources.list.d/sagernet.sources


Потом ставим

sudo apt update
sudo apt install sing-box -y


И для unbound symlink для резволвера можно сделать так

sudo rm /etc/resolv.conf  
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf


(это самая последняя команда в блоке unbound)

Ещё возник вопрос, нафига вообще морочится с этими unbound, если можно ломиться в гугл или cloudflare. Ответ - можно, конечно. Там можно заодно настроить dns over tls, к примеру. Но в этом случае мы отдаём на откуп резолв этим организациям, то есть как бы "доверяем" им и ожидаем, что они всё правильно зарезолвят.

Мы же делаем схему "сам себе велосипед", то есть ломимся напрямую к корневым серверам, кэшируем всё у себя и тп. Но тогда dns over tls особо не настроить, тк (если я не ошибаюсь) глобально его поддержки ещё нет. Впрочем, я не думаю, что dot в данном случае необходим, гораздо важнее, чтобы клиент правильно делал резолв и не пытался что-то резолвить в обход прокси
95😍1🤝1
Как обещал, текстовая версия урока про прокси. Её милостиво согласились проспонсировать мои друзья из ScrapingBee, так что не поленитесь пошарить. 🙌

Кстати, если вам нужен пул прокси именно для скрейпинга, то я с радостью посоветую именно сервисы ScrapingBee, которыми и сам пользуюсь - продукт действительно очень достойный. https://www.scrapingbee.com/blog/how-to-build-private-proxy-server/
97👍2🫡2
Ещё одно решение конкретно для telegram proxy https://github.com/telemt/telemt Позволяет поднять MTProxy буквально за 5 минут (только что проверил). Если будет интерес, потом как-нибудь сделаю урок. Правда через эту штуку не будут работать звонки, судя по всему
🔥163👍1💯1🤝1
Я тут последнее время стал задумываться, почему не хочется ходить в кино, хотя раньше это было "круто" - ну, посмотреть фильм, поесть мороженое или поп-корн... Да, а ведь ещё можно было сходить во Friday's! Это надо было в центр ехать, а цены там были почему-то в долларах (страшное время). Потом спустя много лет мы любили ходить на ночные премьеры - и в общем много хорошего видели. Но сейчас как-то не тянет.

С одной стороны, странно, ведь снимают всё ещё много интересного. И дело не в том, что все вдруг подсели на тик-токи и не могут сосредоточиться - я вот такие форматы видео не смотрю никогда. Больше того, читать длинные тексты или играть в какие-то "долгие" игры для меня вполне нормально. А ходить в кино как-то совсем не тянет.

Кажется, понял, в чём дело. На самом деле, это началось не вчера - много лет назад мы с другом, которого я, к сожалению, не видел уже много лет, могли смотреть фильм дома в стиле "посмотрели пять минут - поставили на паузу - полчаса поговорили". Сейчас, вероятно, это перешло в другую фазу. Нужно просто *поставить на паузу*, чтобы подумать, впитать и ощутить.

В детстве, к примеру, завораживает часто картинка, какие-то смешные моменты, ещё что-то такое. Ну поэтому, кстати, так затягивают идиотские видео "для детей на YT", где совсем уж ересь какая-то творится. Хорошо, что в наше старопердунское время такого не было... Но потом ты начинаешь задумываться. Кажется, первая прямо *сильная* эмоция от фильма была, когда я увидел "Конан-варвар" (где играл всеми любимый Арни). Да, сейчас это уже как-то простовато, но зрелище всех этих мучений для ребёнка, да ещё и сцена распятия - это конечно оставило след в неокрепшей душе.

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

Представьте, что вы едете на машине мимо красивого озера. Можно пронестись мимо и просто обратить на него внимание. А можно остановиться и полюбоваться его красотой, пусть даже молча. Эпизод жизни, который запомнится. Прожить, а не пролететь мимо.
👍31❤‍🔥6👏2💯1
Кстати, вышел Typescript 6. Не знаю, что тут особо добавить, но так как он у меня много где используется, то попробовал мигрироваться. В целом, если проект современный и не использует всякое старьё, вообще без проблем всё проходит, вот пример коммита https://github.com/lokalise/node-lokalise-api/compare/bc5fa96fb54a715a9d7dd2bee86df563cc39de8c...e563c8d809723077b4607e998db8148b41edb265

Заодно заменил tsup на tsdown (для компиляции), чего и вам желаю
7🔥2
В этом видео — реальная запись mock-интервью нашего студента, который за 14 дней освоил базовый и продвинутый Solidity, сделал финальное задание и сел отвечать перед действующим аудитором смарт-контрактов из компании MixBytes.

Вы увидите:
— Какие вопросы реально задают на собеседовании Solidity-разработчика и аудитора.
— Разбор типов доступа, tx.origin vs msg.sender, require vs assert, нюансы selfdestruct и ABI encoding.
— Опасные моменты: selector clash, проблемы с donation-атаками и как их избежать.
— Практическое задание — написать Vault (ERC-4626) с нуля за 30 минут.
— Честную обратную связь: где ошибся, где проявил внимательность, и что нужно подтянуть для реального оффера.

По промокоду KRUK скидка -30% на guidedao.xyz до 20 апреля😎
https://youtu.be/iNm3gdKmXAE
16😍1
У меня тут новая статья про любопытное решение Lightpanda - первый браузер для машин, а не людей 😁 Ну, если кратко, это написанный с нуля супер-лёгкий браузер чисто для сбора данных в разнообразных скриптах. Я попробовал, в целом работает прилично https://www.scrapingbee.com/blog/lightpanda-headless-browser/
👍42🔥1
Шутка дня 🫠

 There are 10 kinds of people in this world:

Those who understand binary, and those who don't.
😁26👍7💯2🗿2🤯1👀1
Сегодня... просто музыка. Внезапно для любителей оперы, прямиком из театра. От лучшей части группы Ravens Die Laughing. Худшая часть (то есть я) в это время просто пила пиво - вероятно, это и к лучшему 😂 https://www.youtube.com/watch?v=0vx8UkcMwa8
🆒6
Гитхабу что-то поплохело, на все коммиты пишет 😄
🤯3🍾2
Хотел поделиться небольшим трюком, который позволяет легко сгенерировать файлы sbom и добавить аттестацию для приложений Go, которые компилируются через Goreleaser в GH Actions. Имея эти данные, любой может проверить происхождение файла, контрольные суммы (которые также подписаны отдельно) и удостовериться, что билд реально делался в этом репо. Конечно, это не докажет, что в коде нет каких-то скрытых нехороших штук.

В общем, в сам action добавляются разрешения

permissions:
contents: write
id-token: write
attestations: write
artifact-metadata: write


Потом ставятся такие штуки перед go releaser:

     - name: Install Syft
uses: anchore/sbom-action/download-syft@v0

- name: Install Cosign
uses: sigstore/cosign-installer@v4.1.1


Следующим шагом запускается Goreleaser, а затем ставится аттестация:

      - name: Find checksum file
shell: bash
run: echo "CHECKSUMS_FILE=$(ls dist/*_checksums.txt)" >> "$GITHUB_ENV"

- name: Generate artifact attestation
uses: actions/attest@v4.1.0
with:
subject-checksums: ${{ env.CHECKSUMS_FILE }}


В самом же конфиге go releaser помимо обычных вещей добавляется:

checksum:
name_template: "{{ .ProjectName }}_{{ .Version }}_checksums.txt"
algorithm: sha256

sboms:
- artifacts: archive

release:
draft: false
prerelease: auto
mode: replace

changelog:
disable: true

signs:
- id: checksums
cmd: cosign
signature: "${artifact}.sigstore.json"
artifacts: checksum
args:
- sign-blob
- "--bundle=${signature}"
- "${artifact}"
- "--yes"


После этого всё сделается "само". Затем через Cosign любой может сделать верификацию, либо посмотреть аттестацию прямо на GitHub
7👍5