LINUX.ORG.RU

Сообщения Xintrea

 

А вы знали, что в глубинах Firefox используется протокол chrome:// ?

Форум — Talks

Запускаем Firefox, на новой странице нажимаем ПКМ на логотипе или на надписи Firefox. И получаем следующее:

chrome://branding/content/about-logo.png
chrome://branding/content/firefox-wordmark.svg

Как вам?

 , ,

Xintrea
()

Новая Unix-like ОС Bunnix, дошедшая до релиза меньше чем за месяц

Новости — Linux General
Группа Linux General

Дрю ДеВолт (Drew DeVault), автор пользовательского окружения Sway, почтового клиента Aerc, платформы совместной разработки SourceHut и языка программирования Hare, сообщил, что он смог написать собственную реализацию клона UNIX всего за 27 дней. Автор назвал свою операционную систему Bunnix.

Система является монолитной Unix-like операционной системой, написанной на Hare с небольшими включениями языка C.

( читать дальше... )

>>> Подробности

 ,

Xintrea
()

Как любители Linux выводят копеюшечки из Binance наиболее выгодно в 2024 году?

Форум — Talks

Знаю, что тут есть специалисты по крипте. Я просто не успеваю разбираться в вечноменяющемся интерфейсе и вечно меняющихся правилах и ограничениях на Binance.

Сейчас хочу вывести эквивалент двухсотпятидесяти $ из валюты ETH в рубли. Начал разбираться, везде информация разная, включая официальные страницы Binance, которые явно устарели.

Пишут что можно через P2P биржу, которая есть в Binance, вывести на рублевую карточку, указав Зеленый или Желтый банк. Начинаю искать где это и как. Ничего похожего не нахожу. В P2P - интерфейсе подсовывается соглашение на суточные ограничения для C2C. Я ничего не понимаю, при чем тут C2C. Потом не могу найти в этом P2P вывод в рубли RUR или RUB. Даже вывода в USD нет. Зато в EUR есть. Почему так - непонятно. Можно ли эти EUR на валютный счет в Сбере или в ВТБ перевести - нигде информации нет. Какой курс и комиссии при этом будет - тоже невозможно выяснить.

В общем, сейчас вижу только одну схему - конвертнуть в пределах Binance ETH в USDT, вывести на WebMoney кошелек WMT, а из него уже на ихней бирже Exchanger получить за WMT рубли. Но я не знаю насколько это выгодно. Может, есть какой другой более простой или более выгодный способ?

 , ,

Xintrea
()

Почему не обновляется значение поля через триггер и функцию в PostgreSQL? (Отладочный вывод в наличии)

Форум — Development

Имеется таблица our_table с полем change_time типа TIMESTAMP DEFAULT CURRENT_TIMESTAMP.

Необходимо менять поле change_time при действиях INSERT и UPDATE.

Для этого в базе создан триггер со следующим кодом:

CREATE TRIGGER our_table_update_change_time
AFTER INSERT OR UPDATE
ON our_table 
FOR EACH ROW EXECUTE PROCEDURE update_change_time_column();

Этот триггер использует следующую функцию, в которой есть отладочное сообщение:
CREATE OR REPLACE FUNCTION public.update_change_time_column()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
BEGIN
  RAISE NOTICE 'Trigger our_table_update_change_time is run'
  NEW.change_time: = now();
  RETURN NEW;
END;
$function$;

Изменение значения в таблице приводит к вызову триггера, а из него и кода функции. Это видно из вывода:
UPDATE our_table SET about='Any new text' WHERE id='1';
ЗАМЕЧАНИЕ:  Trigger our_table_update_change_time is run
UPDATE 1

Казалось бы, все работает? Нет. Изменения значение поля change_time не происходит.

Что здесь сделано неправильно? Как заставить изменяться поле change_time?

 , , ,

Xintrea
()

Блокировка частых запросов с одного IP средствами nginx

Форум — Admin

Делаю блокировку примерно как в пункте 5 вот этой статьи:

https://cloud.vk.com/blog/zaschita-ot-ddos-atak-sredstvami-nginx

Заодно читаю официальную документацию:

https://cloud.vk.com/blog/zaschita-ot-ddos-atak-sredstvami-nginx

И в моем случае конфигурирующие опции прописаны такие:

# Файл /etc/nginx/sites-available/mysite

limit_req_zone $binary_remote_addr zone=ipAddrZone:10m rate=5r/m;
...
server {
    ...
    location /punbb/register.php {
        limit_req zone=ipAddrZone;
    }

Nginx перезагружен.

И ничего эти настройки не блокируют. Я захожу на страницу /punbb/register.php, обновляю ее хоть каждую секунду по 20 раз непрерывно, ответ от сервера всегда нормально приходит.

Вопрос 1: Почему не работает блокировка?

Вопрос 2: Что должно происходить с запросом, когда он по заданным условиям превысил лимит? Он по-умолчанию просто не обрабатывается и выбрасывается? На него выдается ответ с кодом ошибки 503? Он ставится в очередь и будет обработан по истечении периода проверки? Что конкретно?

 , , ,

Xintrea
()

Как установить библиотеку psycopg2 в древней Astra 1.3 (без pip и без интернета) ?

Форум — Development

Имеется древний дистриб Astra Linux 1.3 Смоленск

В нем есть Python 3.2 и некоторое количество библиотек.
Но в нем нет pyhon-библиотеки psycopg2.
И нужно эту библиотеку установить, чтобы заработали python3-скрипты, которые работают с PostgreSQL.

Проблема 1 - в том, что в Astra 1.3 нет pip, и я не могу сделать установки из выкачанного заранее whl-файла.

Проблема 2 - попытка сборки psycopg2 из исходников через команду

python3 setup.py build
...приводит к тому, что появляется ошибка на f-строках, так как они появились в Python 3.6, а в системе стоит Python 3.2.

Вопрос: как можно извратиться, и установить psycopg2 в Astra 1.3?

 , , ,

Xintrea
()

Стоит ли покупать гитару у перекупа с МегаМаркета?

Форум — Talks

Linux тут при том, что я с него пишу.

В общем, оказывается, сейчас люди заморачиваются с тем, что покупают вещи на Мегамаркете с большими кешбкеми в виде бонусов Спасибо, которые фиг поймешь где можно потратить и в каком количестве. Но расчет (в моем случае) примерно следующий:

- Покупается вещь за 60000
- На него дается кешбек 34%, то есть 20400
- Вещь выставляется на авито за 60000-20400+2000(навар)=41600
- Нигде, ни на Ozon, ни на Яндекс.Маркет такой цены нет, в лучшем случае 49000-51000

Плюс в том, что в отличие от заказа в онлайн-магазине, вещь можно прийти и посмотреть.

Каковы минусы такой покупки? Какие подводные камни?

 , ,

Xintrea
()

Подскажите российский аналог GitHub/GitLab без ограничений для открытых проектов

Форум — Talks

1.

Заглянул сейчас на GitFlic.ru, думал перенести на него проекты с буржуйского GitHub. Смотрю на ограничения, а там размер репо не более 4Gb. А у меня куча реп, и одно из них 4.3Gb.

Так что GitFlic.ru не для меня.


2.

Решил зайти на hub.mos.ru, а там регистрация в департаменте с полным указанием ФИО, сотового телефона и электронной почтой. А если хочешь зайти через Госуслуги, то будут переданы данные:

* Просмотр данных вашего военного билета
* Проведение входа в систему
* Просмотр вашего ИНН
* Просмотр номера вашего мобильного телефона
* Просмотр СНИЛС ребёнка
* Просмотр фамилии, имени, отчества (при наличии) ребёнка
* Просмотр пола ребёнка
* Просмотр вашей фамилии, имени и отчества
* Просмотр ИНН ребенка
* Просмотр вашего места рождения
* Просмотр данных вашего заграничного паспорта
* Просмотр вашего СНИЛС
* Просмотр ваших контактных данных (номер мобильного телефона адрес электронной почты), адресов регистрации и проживания
* Просмотр данных вашего свидетельства о рождении
* Просмотр даты вашего рождения
* Просмотр вашего пола
* Просмотр данных ваших транспортных средств
* Просмотр данных вашего вида на жительство
* Просмотр данных о вашем документе, удостоверяющем личность
* Просмотр списка ваших организаций
* Просмотр даты рождения ребёнка
* Доступ к данным вашего личного кабинета на портале гос. услуг (интерактивные формы)
* Просмотр вашего адреса электронной почты
* Просмотр данных вашего разрешения на временное проживание
* Просмотр данных вашего водительского удостоверения
* Получение сведений о свидетельстве о рождении ребенка

Которые, естественно, будут скопированы и аккуратно сложены туда, где они лежать не должны.

Как-то не адекватно передавать такие данные чтобы сделать удаленный репозитарий.


3.

Подскажите хотя бы один бесплатный российский репозитарий, в котором нет ограничений для Open Source и который не страдает синдромом вахтера.

 , , ,

Xintrea
()

Я стал больше понимать, зачем нужны словари синонимов

Форум — Talks

... после того, как увидел информацию о текстовых запросах. Синонимы каких слов и выражений ищут пользователи?

Вот вам свежие данные с synonyms.su:

Последние синонимы пользователей

вот это да, ничосе  [ Дарьядесит ]
теребить стручок    [ Софья ]
вы мне не интересны [ Mary ]
писечка бритая      [ gusorus1 ]
точить шпагу        [ Артём ]
рукотворчество      [ Яна ]
одно дно            [ Жак ]
надрачивать         [ Софья ]
наяривать           [ Софья ]
блаженство          [ Наталья ]
Софья с gusorus1 явно чем-то озабочены. А Жак, как всегда, прав.

 ,

Xintrea
()

Да что вы знаете - 2: Разработчик взломал компилятор C++ 28-летней давности, чтобы проект поддерживал исключения

Форум — Talks

Разработчик Начо Мелладо (Nacho Mellado) рассказал, что он взломал компилятор C++ 28-летней давности (Watcom C++32 версии 11.0 1996 года от Sybase Inc.), чтобы проект поддерживал исключения. Фактически это произошло за два года до того, как исключения стали частью первого стандарта C++.

В 1998 году Мелладо с друзьями выпустили библиотеку The DarkRising Library (TDL) обработки графики и аудио в реальном времени для DOS, в основном для игр и создания проектов типа demoscene. Проект Watcom уже тогда опередил своё время, но поддержки исключений там ещё не было.

Спустя годы Мелладо возобновил работу с библиотекой. Код для обработки в реальном времени в основном писался на ассемблере, но он начал добавлять поддержку C++ для более быстрой интеграции. Однако из-за повсеместной проверки ошибок код стал выглядеть слишком пространным.

Там было множество шаблонов типа «do this or fail gracefully», которые с помощью использования исключений+RAII можно было бы упростить, но при этом дать программе возможность исправить некритическую ошибку. Мелладо написал код с класами для RAII, которые игнорировали ошибки, но его исключения не перехватывались нигде в программе.

Оказалось, что Watcom компилирует try, catch и throw, но сгенерированный код вызывает хуки, которых нет ни в одной библиотеке, поставляемой с компилятором. Поиск по ретрофоруму этого проекта оказался безрезультатным. Судя по всему, команда Sybase готовила поддержку исключений, но тогда разработчики не выпустили её полностью в открытом виде.

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

Эта доработанная модель компилятора позволила Мелладо кодировать хуки и иметь исключения! С исключениями+RAII приведённый выше код теперь выглядит намного лучше.

Платформа оборачивает всё во внешний try-catch и автоматически обрабатывает ошибки и освобождение ресурсов. Мелладо пояснил, что итоговый код станет более кратким, поскольку класс Image будет включать в себя большую часть базовой простой структуры SLI.

https://habr.com/ru/news/806239/

 , , ,

Xintrea
()

PostgreSQL не хочет слушать порт на второй сети при загрузке. При старте сервиса все OK.

Форум — Admin

Имеется комп с PostgreSQL.

У него на eth0 несколько подсетей (далее нужна будет подсеть 222):

> ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 1c:6f:65:96:54:bc brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.95/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
...
    inet 192.168.222.95/24 brd 192.168.222.255 scope global eth0:7
       valid_lft forever preferred_lft forever

Чтобы PostgreSQL слушал порт на 222 подсети, сделана настройка:
Файл: /etc/postgresql/9.6/main/postgresql.conf
listen_addresses = 'localhost,192.168.222.95'

и
Файл: /etc/postgresql/9.6/main/pg_hba.conf
host    all             all              192.168.222.0/24        md5

Если после внесения этих настроек перезапустить сервис postgresql, то все стартует без ошибок, а порт 5432 слушается на IP-шниках 127.0.0.1 и на 192.168.222.95.

Но если перезагрузить компьютер, то порт 5432 на IP 192.168.222.95 не поднимается.

В логах следующие ошибки:
СООБЩЕНИЕ:  не удалось привязаться к сокету IPv6: Невозможно назначить запрошенный адрес
ПОДСКАЗКА:  Возможно порт 5432 занят другим процессом postmaster? Если нет, повторите попытку через несколько секунд.
СООБЩЕНИЕ:  не удалось привязаться к сокету IPv4: Невозможно назначить запрошенный адрес
ПОДСКАЗКА:  Возможно порт 5432 занят другим процессом postmaster? Если нет, повторите попытку через несколько секунд.
ПРЕДУПРЕЖДЕНИЕ:  не удалось создать принимающий сокет для "192.168.222.95"
СООБЩЕНИЕ:  передача вывода в протокол процессу сбора протоколов
ПОДСКАЗКА:  В дальнейшем протоколы будут выводиться в каталог "pg_log".


Вот здесь я нашел возможную причину: говорят что сервис postgresql стартует раньше, чем инитится сеть, поэтому не на локальном IP PostgreSQL не может подняться.

Тогда я проверяю зависимости сервиса postgresql:
# systemctl list-dependencies postgresql
postgresql.service
● ├─postgresql@9.6-main.service
● ├─postgresql@9.6-main.service
● ├─system.slice
● ├─network-online.target
● │ ├─connman-wait-online.service
● │ └─networking.service
● └─sysinit.target
●   ├─dev-hugepages.mount
●   ├─dev-mqueue.mount
●   ├─keyboard-setup.service
...

Видно, что postgresql@9.6-main.service и network-online.target запускаются в параллель, а надо сделать зависимую загрузку.

Поэтому создаю файл /etc/systemd/system/postgresql.service.d/override.conf следующего содержания:
[Unit]
Requires=network-online.target
After=network-online.target

Потом выполняю:
systemctl daemon-reload
systemctl restart postgresql

И смотрю зависимости через list-dependencies, а они не изменились. Перезагружаюсь - то же самое, зависимости все те же, и PostgreSQL не поднимает свой сокет на 192.168.222.95.

Вопрос: где что еще надо крутить?

 ip-адрес, , ,

Xintrea
()

Не могу найти микросхему ST VIPer K41612 и понять есть ли аналог

Форум — Talks

Привет, народ.

На стиральной машинке при визуальном осмотре найдена сгоревшая микросхема.

На ней написано:

ST
VIPer
K41612
На микросхеме 8 ног. Рядом с микросхемой есть обозначение IC101. Судя по расположению, микросхема как-то связана с питанием.

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

Где найти информацию по этой микросхеме? Где купить новую?

Linux тут при том, что я с него пишу.



Перемещено Dimez из linux-hardware

 , микросхема

Xintrea
()

Какой ваш самый НЕлюбимый язык/языки программирования?

Голосования — Голосования

Недавно состоялся опрос по самым любимым языкам программирования. Для правильного понимания ситуации в языках, необходимо провести такой же опрос, только в обратную сторону. Может оказаться, что один и тот же язык будет в одном опросе одним из самых любимых, а в другом опросе — одним из самых нелюбимых. Это нужно проверить!

  1. JavaScript 170 (29%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. 162 (28%)

    ****************************************************************************************************************************************************************************************************************************************************************************************************************

  3. Python 111 (19%)

    ****************************************************************************************************************************************************************************************************************

  4. Java 108 (19%)

    ***********************************************************************************************************************************************************************************************************

  5. PHP 108 (19%)

    ***********************************************************************************************************************************************************************************************************

  6. C++ 90 (15%)

    *************************************************************************************************************************************************************************

  7. C# 86 (15%)

    *****************************************************************************************************************************************************************

  8. Rust 85 (15%)

    ****************************************************************************************************************************************************************

  9. Visual Basic 83 (14%)

    ************************************************************************************************************************************************************

  10. Shell (bash, sh, zsh и тд.) 71 (12%)

    *************************************************************************************************************************************

  11. GO 65 (11%)

    **************************************************************************************************************************

  12. Perl 63 (11%)

    **********************************************************************************************************************

  13. TypeScript 62 (11%)

    ********************************************************************************************************************

  14. BASIC классический 57 (10%)

    ***********************************************************************************************************

  15. Pascal (включая fpc, Delphi и др.) 56 (10%)

    *********************************************************************************************************

  16. Objective-C 46 (8%)

    **************************************************************************************

  17. Ruby 46 (8%)

    **************************************************************************************

  18. Brainfuck 46 (8%)

    **************************************************************************************

  19. C 39 (7%)

    *************************************************************************

  20. Swift 33 (6%)

    **************************************************************

  21. Другой (напишу в комментариях) 31 (5%)

    **********************************************************

  22. РАЯ (язык академика Ершова) 30 (5%)

    ********************************************************

  23. Awk 29 (5%)

    ******************************************************

  24. COBOL 26 (4%)

    ************************************************

  25. Scala 24 (4%)

    *********************************************

  26. Common LISP 24 (4%)

    *********************************************

  27. Haskell 20 (3%)

    *************************************

  28. Tcl 20 (3%)

    *************************************

  29. Erlang 19 (3%)

    ***********************************

  30. Assembler 19 (3%)

    ***********************************

  31. Kotlin 18 (3%)

    *********************************

  32. D 16 (3%)

    ******************************

  33. Fortran 15 (3%)

    ****************************

  34. Lua 15 (3%)

    ****************************

  35. Clojure 14 (2%)

    **************************

  36. Forth 14 (2%)

    **************************

  37. Nim 13 (2%)

    ************************

  38. QCL 11 (2%)

    ********************

  39. Ada 10 (2%)

    ******************

  40. Julia 10 (2%)

    ******************

Всего голосов: 1965, всего проголосовавших: 583

 

Xintrea
()

Как в Git сделать Tag или Notes в момент коммита, а не после?

Форум — Development

Никак не могу понять.

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

Вот например, мне нужно пометить создаваемый в данный момент коммит тегом с номером версии. Или написать Notes с номером версии в момент создания коммита. Чтобы быть уверенным что в этом коммите находится нужная версия ПО.

Получается, что так сделать нельзя? Надо вначале закоммитить изменения, потом выяснить ID этого коммита, а потом отдельной командой создать Tag или Notes? В момент коммита создать Tag или Notes невозможно?

 , , ,

Xintrea
()

Git-хук на bash дает ошибку «Неприменимый к данному устройству ioctl». На sh все в порядке

Форум — Development

Система Astra Linux 1.6

Имеется развесистый git-хук pre-commit, написанный на bash. Если сделать коммит, то в консоль вываливается три сообщения:

stty: 'стандартный ввод': Неприменимый к данному устройству ioctl
stty: 'стандартный ввод': Неприменимый к данному устройству ioctl
stty: 'стандартный ввод': Неприменимый к данному устройству ioctl

Вроде все работает, но эти сообщения нужно убрать.

Я стал разбираться, и сократил git-хук до такого состояния:
#!/bin/bash
echo "Hello pre-commit"
Но сообщения про ioctl все равно появляются.

Тогда я заменил в этом минимальном примере #!/bin/bash на #!/bin/sh, и сообщения об ошибке пропали!

И вот вопрос: скрипт хука весьма обширный, и переводить его с bash на sh - вообще не вариант. Что нужно докрутить, чтобы этих ошибок не было?


PS: Проверил то же самое на Debian 12, такой проблемы нет. Это именно Астровская проблема.

 , , , ,

Xintrea
()

const_cast - вселенная хочет, чтобы я запутался

Форум — Development

http://cppstudio.com/post/5343/

const_cast — константное приведение типов данных
Операция const_cast доступна только в C++. Константное приведение используются, чтобы константную переменную преобразовать в неконстантную. При этом, константным становится возвращаемое значение операции const_cast, а не сама переменная.

Видимо, автор должен был написать «При этом, неконстантным становится возвращаемое значение», но забыл частицу «не»?

 , ,

Xintrea
()

Как в qmake заставить перекомпилиться файл, в котором используется изменяемая DEFINE-переменная ?

Форум — Development

В корне каталога проекта имеется файл version.txt, он автоматически обновляется по определенным требованиям.

Содержимое этого файла передается в DEFINE-переменную:

# Установка qmake переменной с номером версии
SOFTWARE_VERSION = "$$cat(version.txt)"

# Проброс qmake переменной в C/C++
DEFINES += "SOFTWARE_VERSION=\"$$SOFTWARE_VERSION\""


Проблема в том, что если изменяется version.txt, то меняется и DEFINE-переменная SOFTWARE_VERSION. Однако исходные файлы проекта при этом, само собой, никак не меняются.

И проект не пересобирается, потому что изменений в проекте ведь нету. А он должен собраться с новой версией, установленной в version.txt. Причем не обязательно, чтобы пересобирался весь проект. Достаточно собрать с учетом того, что изменился один файл, в котором используется DEFINE-переменная SOFTWARE_VERSION.

Вопрос: как заставить собираться проект с новым значением, если изменился номер версии в файле version.txt?

Ограничение 1: проект большой, полная пересборка - это оверхед.

Ограничение 2: все должно конфижиться через *.pro-файл проекта, никаких дополнительных скриптов быть не должно.

 , , , ,

Xintrea
()

По следам гитарной битвы луноходов: розыск атомного кота

Форум — Talks

Аксакалы еще помнят адское действо, произошедшее на страницах ЛОРа много лет назад?

Призрак в опере? Нет проблем, обеспечим!

Практически то же самое сделал недавно товарищ Александр Пушной, только на более другом медийном уровне. При розыгрыше его гитары, ему накидали ~3000 каверов на рифф из программы Гилилео.

Вот обзор роликов (12 штук):
https://www.youtube.com/watch?v=QHQeVJqJ6m8&t=2125s

Проблема в том, что там нет ссылок на ролики победителей. А я их хочу найти. И даже нашел все, кроме номера 6:

https://webhamster.ru/mytetrashare/index/mtb0/1707837133sryjjed5a3

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

В общем, предмет поиска следующий: ролик, в котором товарищ в футболке с котом играет на белой гитаре. Известно что автор - Сергей из Долгопрудного, типа у него есть группа Nuclear Cat. Кадры из ролика здесь:

https://youtu.be/QHQeVJqJ6m8?t=2922

Нужно найти ссылку на этот ролик.

PS: Линукс тут при том, что мой ролик про осциллограф для этого действа был полностью смонтирован в Linux: Audacity, Blender, OsciRender, FFmpeg, Gimp, Inkscape.

 , , ,

Xintrea
()

Не понимаю эти ваши замыкания в Go

Форум — Development

Читаю урок по анонимным функциям:


Преимуществом анонимных функций является то, что они имеют доступ к окружению, в котором они определяются. Здесь функция square определяет локальную переменную x и возвращает анонимную функцию. Анонимная функция увеличивает значение переменной x и возвращает ее квадрат. Таким образом, мы можем зафиксировать у внешней функции square состояние в виде переменной x, которое будет изменяться в анонимной функции.


Хорошо, то есть, анонимная функция будет иметь какой-то хитрый доступ к переменной x, существующей в функции square(). Надо это проверить, и вызвать square() между вызовами анонимной функции.

И что можно увидеть?

Код:

package main
import "fmt"

func square() func() int {
	var x int = 2
	fmt.Println("X variable in square function ", x)

	return func() int {
		x++
		return x * x
	}
}

func main() {
	f := square()
	fmt.Println(f())
	fmt.Println(f())

	square() // <---------- Проверка

	fmt.Println(f())
	fmt.Println(f())
}

Результат:
X variable in square function  2
9
16
X variable in square function  2
25
36

Получается, что анонимная функция не работает с переменной x, размещенной в square(). Происходит какое-то копирование переменной, и потом работа идет с этой копией. То есть, реальность для переменной x «расщепляется»: Внутри square() у нее одно значение, а при вызове анонимной функции - другое.

Как это можно понять? Как это можно уложить в голове? Как этим можно пользоваться?

 , , ,

Xintrea
()

Подключение монохромного RCA к VGA-монитору

Форум — Talks

Привет, народ!

Хочу подключить свою Микрошу к VGA-монитору. Фишка в том, что выход у Микроши низкочастотный и монохромный. То есть, не нужно разделять сигнал по цветовым каналам.

Покупал и возвращал 4 модели всяких преобразователей RCA to VGA, VIDEO to VGA и т.д. с RCA-шным входом и VGA-шным выходом. 3 из них вообще не выдавали изображение. Один преобразователь кое-какое изображение все-таки показал, но оно троилось по вертикали. Перепробовал все параметры в меню, добиться нормального изображения не смог. Тоже сдал.

Сейчас думаю, а если разделять сигнал не нужно, то можно ли просто этот сигнал навесить на один из цветовых пинов VGA-разъема и все? То есть два провода - сигнал и земля. Ну, может быть какое-то сопротивление добавить, видел что рекомендуют «нагрузить» RCA-вход сопротивлением 75 Ом. Но не говорят что имеют в виду - последовательно с сигналом поставить резистор, или сигнал завести на землю через резистор. Я в этих делах не соображаю.

Есть картинка: https://raw.github.com/xintrea/mytetra_syncro/master/base/170557880702eu9jpos...

1. Стоит ли попробовать такой конвертер «два проводка», или однозначно не будет работать?

2. А будет ли работать HD9800/GBS8200 типа такого: https://aliexpress.ru/item/1005006215879986.html?sku_id=12000036318620669&amp...
Или в нем то же самое что и в других конвертерах, и смысла его покупать нет?

 , , , , конвертор

Xintrea
()

RSS подписка на новые темы