Сообщения

Как компилировать встроенные приложения gnome

Изображение
В официальной документации gnome  говорится что для сборок используется система сборок - BuildStream. В этом туториале я буду использовать его через докер  docs.buildstream.build/1.6.1/install_docker.html . Для начала нужно установить докер. Сделать это можно одной командой: curl -fsSL https://get.docker.com | sh BuildStream создали утилиту для запуска через докер - bst-here . Он запускает докер контейнер BuildStream с всеми нужными предустановленными программами, что позволяет не засорять основную систему. Для установки нужно скачать скрипт и добавить его в директорию исполняемых файлов: mkdir -p ~/.local/bin curl --get https://gitlab.com/BuildStream/buildstream/raw/master/contrib/bst-here > ~/.local/bin/bst-here chmod +x ~/.local/bin/bst-here Чтобы убедится в правильности установки нужно просто запустить команду bst-here. Должен появится терминал на подобии этого: Для настройки buildstream.conf нужно создать файл на хост машине /root/.config/buildstream.conf. # This confi...

TypeError: __init__() got an unexpected keyword argument 'decode'

This error is from aiortc's webcam example application. The core of this problem is that the pypi version is old, and git version is using new interface that is not available from pypi. So you need to install aiortc from git. If you just do pip install git+https://github.com/aiortc/aiortc.git and get this error:   build/temp.linux-x86_64-cpython-39/aiortc.codecs._opus.c:570:10: fatal error: opus/opus.h: No such file or directory     570 | #include <opus/opus.h>         |          ^~~~~~~~~~~~~   compilation terminated.   error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1   ----------------------------------------   ERROR: Failed building wheel for aiortc

How to download download youtube ad without using any tools

Изображение
Recently I wanted to download a YouTube ad. But the thing is, many ads don't have a copy URL button. After searching youtube and google, I found only broken tools, and stupid spam videos that provide no real value.  The solution I found is straightforward: You should click "Copy debug info," paste it in a notepad or text editor, and search for "addebug_videoId." By using this ID you can simply craft YouTube video URL: https://www.youtube.com/watch?v=id_here access the video page or download it using YouTube video downloader tool like yt-dlp .

Error 0x8000ffff: Unknown HTTP status code 451, returned from URL: https://pkgs.tailscale.com/stable/tailscale- etc..

Когда пытался установить tailscale у друга из РФ, столкнулся с ошибкой установщика 451. Дело в том что стандартный установщик, это на самом деле лаунчер который скачивает .msi файл с сервера. Чтобы небыло ошибки, нужно скачать full версию tailscale, через IP который не заблокирован. В full версии находится как установщик, так и сам tailsacle. Поэтому при установке, никакой ошибки небудет. https://pkgs.tailscale.com/stable/tailscale-setup-full-1.58.2.exe

IT мемы с которыми я столкнулся

Этот пост буду старатся дополнять различными мемами с которыми возможно вы тоже столкнулись гуглив какой то термин или пытаясь исправить ошибку. Бибайт мем Во многих источниках часто говорят что в килобайте 1024 байт, и прочий бред. На самом деле в килобайте 1000 байт. Но в кибибайте 1024. Часто где эти понятия используются взаимозаменяемо, но на самом деле это абсолютно разные понятия. В основном этот мем происходит в старой технической литературе, и в учебниках по информатике которые были написаны во времена Брежнева, и которые перепечатывались без проверки информации специалистами. Мем с Systemd Systemd это часть юникс систем которая позволяет настраивать запуск программ. Например если у вас есть программа-вебсервер то после перезагрузки машины вы хотите чтобы программа запустилась при старте, после инициализации системы. Каждая програма в Systemd представлена Unit-ом который можно настроить. Мем состоит в том что у systemd unit есть 2 режима работы: simple, и forking. И многие люди...

Как обходить блокировки вебсайтов в хроме

Изображение
Многие государства цензурируют либо замедляют многие сайты. Например в Казахстане я не могу зайти в blogger.com тк государство заблокироало IP адреса для этого сайта. Но если начать использовать прокси сервер или впн на весь свой трафик, то нагрузка на прокси будет слишком большой. Тк например, неимеет смысла использовать прокси для просмотра ютуба в 1080п. Чтобы избавить прокси сервер от лишней нагрузки можно использовать прокси свитчер, который автоматически выбирает прокси сервер взависимости от настроенных правил. Я использую расширение для браузера  SwitchyOmega . В отличии от многих других свитчеров, этот свитчер опенсурсный. В попапе этого расширения можно выбрать режим работы. Выставляем auto switch, чтобы он переключал на проксю по правилам. Потом заходим в Options, там выставляем прокси сервер который у нас есть. В правилах автосвитча можно настроить свитчинг на прокси взависимости от домена: Это мой текущий сетап для обхода блокировок. Все опенсурсно, и бесплатно. Единст...

Проблемы парсинга сайтов на JS фреймворке reactjs

Сегодня мне надо было парсить сайт на reactjs, и для этого мне требовалось сэмулировать заполнение формы. Чтобы отправить форму надо просто нажать на кнопку отправить, а это эмулируется очень легко - просто надо вызвать .click на элементе кнопки. Самым логичным решением было бы попросту отказатся от эмуляции действия юзера, и просто самому слать HTTP запрос на сервер напрямую. Но из-за специфики задачи мне надо было именно эмулировать действия заполнения инпута. Проблема началась именно когда надо было заполнять текстовые поля формы. Самый простой вариант, это замена .value у элемента input. Но это так неработает, вить сайты написанные на reactjs обычно шлют данные не через <form> с встроенной в браузер функцией submit. Они используют fetch, обычно POST запрос с json данными от заполненной формы. Обычно сайты использующие jquery, или ванильный javascript перед отправкой запроса сами забирают с инпутов данные через .value.  Но это так неработает с фреймворками состояний. В слу...

Самый простой способ настроить HTTPS на docker Django

Обычно для крупных проектов я использую nginx, либо полноценные CDN сервисы вроде CloudFlare которые дают https из коробки. Но в моём случае мне требовалось развернуть на дешевом впс сервере всю инфраструктуру, и чтобы был https. Мне нехотелось разбиратся в тонкостях настройки nginx и копатся в каких-то конфигах. В итоге я нашел решение - Caddy . Все что нужно для настройки - DNS A запись, и внешний айпи. Чтобы добавить Caddy к себе в docker-compose, я создал отдельный файл docker-compose.prod.yml: version : '3' services :   caddy :     image : caddy     ports :       - 80:80       - 443:443     volumes :       - ./Caddyfile:/etc/caddy/Caddyfile       - caddy_data:/data       - caddy_config:/config volumes :   caddy_data :   caddy_config : Также создал Caddyfile в корне проекта: bbak.mkhitaryan.pw {   reverse_proxy web:8000 } Все что нужно для настройки - поменяйт...

Namecheap redirect does not work with https

Изображение
I have tried using Namecheap's redirect functionality from my main domain mkhitaryan.pw to my cv. But I quickly run into an issue that Namecheap only allows HTTP requests! When it receives an HTTPS request, it just hangs the connection until timeout: Namecheap redirect only works on port 80! As you can see, the 443 port just hangs the connection, but the 80 port redirect works well! The solution that I found is to use Netlify  instead of Namecheap's redirect. Netlify works very well with HTTPS and allows you to make redirection happen on an HTML page. Netlify also gives you 100GB of free traffic! Good luck spending it with a blank HTML redirect page, that is a few kilobytes large. There are many guides over the WEB on how to connect your Namecheap domain to Netlify. I only provide the HTML page that I used for redirection: <!DOCTYPE html> < html > < head > < meta http-equiv = "refresh" content = "0; url='https://cv.mkhitaryan.p...

Installing lightweight proxy server on raspberry pi

Introduction As I live in Armenia, I have a lot of friends across the CIS region who live under internet oppression regimes. For an example the Russians cannot access Instagram, Twitter without a vpn, and many other resources. That makes it very important to them to use proxy/vpn to bypass the DPI, which government regimes use for censorship. Here in Armenia we have clean internet with no censorship, so if I setup a proxy for my friends they can use it to access the free on censorship internet. In most of the guides I found on the internet they are using privoxy, which is insecure  because it has no authentication system built-in, and if left as it is, your proxy IP address will be used by port scanners for various bad stuff like spamming. Such behavior risks your ip address getting marked as spam, or getting used by hackers to make you a suspect of cybercrime. That is why I found a better solution for creating a proxy server called 3proxy . It is pretty lightweight, and has almost...

Shadowsocks готовим домашний vpn на расберипай 2022

Изображение
У нас в Армении очень чистый интернет. Насколько я знаю, понятия блокировка сайтов у нас в стране не существует, в отличии от большанства других стран СНГ. Поэтому я решил создать себе VPN сервер и дать его своим друзьям, чтобы они могли свободно пользоватся интернетом. Есть много разных сервисов для поднятия vpn сервиса, openvpn, wireguard итд, но мне кажется что они в большинстве своём имеют слишком широкий функционал чтобы запускать на встроеных устройствах. Если цель это просто обход блокировок, и шифрация промежуточного трафика то по моему shadowsocks самый лучший вариант. Самый простой способ поставить шадоусокс на малину это использовать apt-get. Но в нём последний билд shadowsocks был в 2018 году. Поэтому лучше установить самому с гитхаба  https://github.com/shadowsocks/shadowsocks-rust/ . Кроме того, shadowsocks с тех пор переписывали с питона на си, а теперь и вовсе поддерживается только версия на rust. Чтобы скачать нужно просто скачать tar архив с релизов билдов и распа...

Errors when installing aiortc from git on Windows

Изображение
When I was trying to install aiortc on windows I got stuck with multiple errors. When you just do pip install . you will not get a working version: c1083: cannot open include file: 'opus/opus.h': no such file or directory 'vcpkg' is not recognized as an internal or external command To fix those errors you need to install the native libraries by the script provided by  aiortc-codecs . Also you will need build tools etc. If you have no build tools installed you can install them . Run the visual studio installer and opt those packages: You also need to install  vcpkg . Download from git: git clone https://github.com/Microsoft/vcpkg.git , run the install script: .\vcpkg\bootstrap-vcpkg.bat and add it to path by using "Edit environment variables" Double tab on Path and add vcpkg folder to the list, it should have vcpkg.exe file in it: Reboot your pc, or reopen the cmd so it has Path updated. Now we need to use the dependency installer script from  https://github...

Почему часто используют шестнадцатеричное представление для бинарных данных

Я раньше непонимал почему его вообще используют и зачем оно нужно. На самом деле это самый удобный способ представления бинарных данных человеку. Поскольку бинарная куча неразборчива для человека. Для него все эти единицы и нули сливаются в одну непонятную кучу. Поэтому использование hex для визуальной инспекции бинарной последовательности более удобно. Как мы все знаем 1 байт это 8 бит. 1 бит это 2 возможных значения (1 и 0). Получается 8 позиций по 2 размещения. То есть в 1 байте есть 2^8 (256) возможных состояния. Hex имеет 16 состояний 0-9 и A-F. 0--9 стостояний получается 10, и A-F (ABCDEF (6 стостяний)). И так удобно получилось что если вы расставите 2 hex символа то получится 16*16=256 комбинаций.