LINUX.ORG.RU

Избранные сообщения DAGAZ

C++ Siberia 2020

Новости — Конференции и встречи
C++ Siberia 2020
Группа Конференции и встречи

28-29 февраля мы отпразднуем конец зимы, прогрев мозги до максимально возможной температуры.

На очередной C++ Siberia обсудим конкурентность, функциональщину, рефлексию, новые стандарты и эпик фейлы комитета стандартизации. Выступят Тимур Думлер, Антон Полухин, Виталий Брагилевский и другие.

Конференция пройдет в лекторий-баре ПОТОК, что по адресу Новосибирск, Депутатская, 46.

До встречи на конференции!

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

 , ,

sermp
()

Дачная лаборатория

Галерея — Рабочие места

Собственно, пока были новогодние праздники решил заняться самым неблагодарным делом - навести порядок в дачной лаборатории, выкинуть хлам старый. Собственно, на фотографии она и есть. А чуть ниже панель управления этой лабораторией в homeassistant.

Оборудование (основное):

  • Asus N75SF (Доживает свои дни на даче)
  • HP Envy 13 (Текущая рабочая машинка)
  • 3d-принтер Flying bear P902
  • Паяльная станция Lukey 702. Только сейчас понял, что ей уже 15 лет. Ну и оловоотсос китайский в добавок.
  • Осциллограф: Rigol DS1052E. До 100Мгц я его так и не разогнал, т.к. не было надобности.
  • Камеры: Над осциллом дешевая китайская yoosee с PTZ. Включаем RTSP, режем доступ к облаку на роутере, профит. Еще по участку в роутеры на OpenWRT (их 4 штуки, между ними гигабит, роаминг через 802.11r) воткнуто несколько старых веб камер, отдающие поток через mjpeg-streamer. Недавно добыл для экспериментов две xiaomi dafang на которые ставится прошивка dafang-hacks. Пожалуй, на этом варианте и остановлюсь.
  • Управляющие устройства для homeassistant: Тут сборная солянка. Часть - мои старые проекты на nrf24l01, часть на esp8266 с esphome (некоторые мои платы, некоторые готовые девайсы от sonoff перешитые esphome). Дополнительно по дому выключатели xiaomi aqara и некоторые датчики из этого комплекта, которые работают через zigbee2mqtt. Облака? Шпионаж? Нет, не слышали.
  • Освещение: Из-за потолка под скатом крыши, поставил светодиодные ленты. Ими управляют мои самопальные модули, плавно зажигающие и гасящие их.

Софт:

  • Octoprint (веб-интерфейс для 3д-принтера)
  • cncjs (веб-интерфейс для станка с ЧПУ. Иногда приходится юзать bCNC, так как autolevel’инг в cncjs уже который год никак не допилят)
  • shinobi (сервер видеонаблюдения. Пока только разворачиваю, думаю попробовать его сдружить с аппаратным m2m mfc на exynos в odroid-x2).
  • wireguard - соединяет дом и дачу в одну локальную сеть. С тех пор, как провели оптику пинг от дачи до дома 4 мс.
  • Steam - использую, чтобы иногда поиграться. Видеокарта стоит в сервере дома, на дачу идет стрим. Задержка 20-30мс, что вполне достаточно.
  • Роутеры: Везде исключительно OpenWRT с типовой для меня конфигурацией.
  • Homeassistant - собственно, пульт управления для умнодома.
  • Chef - конфигурацию всех одноплатников под все задачи давно перестал делать руками, решил перейти на chef. Сейчас в процессе активного осваивания рубей и переписывания на нем всего и вся.
  • Jenkins - по расписанию собирает ночью OpenWRT с типовой конфигурацией и деплоит на роутеры. Вот такие вот хардкорные обновления.

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

Самое главное, что есть - удаленное управление, которое позволяет отправить задачи на 3д-принтер/станок с чпу, что займут много времени и шума, а когда приедешь на дачу просто снимаешь готовый результат и не тратишь время.

 , mad skillz, ,

ncrmnt
()

Линус Торвальдс высказался о ZFS

Новости — Open Source
Группа Open Source

В процессе обсуждения планировщиков ядра Linux пользователь Джонатан Данти пожаловался, что изменения в ядре сломали важный сторонний модуль — ZFS. Вот что написал в ответ Торвальдс:

Имейте в виду, что тезис «мы не ломаем пользователей» относится к программам пространства пользователя и к ядру, которое я сопровождаю. Если вы добавляете сторонний модуль вроде ZFS, то вы сами по себе. У меня нет возможности поддерживать такие модули, и я не отвечаю за их поддержку.

И, откровенно говоря, я не увижу ни одного шанса на включение ZFS в ядро, пока не получу официальное сообщение от Oracle, заверенное их главным юрисконсультом или, лучше всего, самим Ларри Эллисоном, в котором говорится, что всё ок, и ZFS теперь под GPL.

Некоторые думают, что добавить код ZFS к ядру — неплохая идея, и что интерфейс модуля нормально с этим справляется. Что ж, это их мнение. Я же не чувствую такое решение надёжным, учитывая спорную репутацию Oracle и проблемы, связанные с лицензированием.

Поэтому мне абсолютно неинтересны штуки вроде «слоёв совместимости ZFS», которые, как некоторые думают, изолируют Linux и ZFS друг от друга. Нам от этих слоёв никакой пользы, а учитывая склонность Oracle судиться из-за использования их интерфейсов — я не думаю, что это реально решает проблемы с лицензиями.

Не используйте ZFS. Вот и всё. По-моему, ZFS это больше баззворд, чем что-то ещё. Проблемы с лицензированием — только ещё одна причина, почему я никогда не стану заниматься этой ФС.

Все бенчмарки производительности ZFS, что я видел, совершенно не впечатляют. И, как я понимаю, ZFS уже даже толком не сопровождается, и никакой долгосрочной стабильностью здесь не пахнет. Зачем вообще её использовать?

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

 , ,

Deleted
()

Полировка знаний о Си

Форум — Development

Посоветуйте, пожалуйста, книгу или статью об особенностях Си, с помощью которой можно было бы дополнить уже имеющиеся знания о языке

 

LancerRevX
()

Криптографическая утилита cryptoarmpkcs на базе стандартов с открытым ключом портирована на Android

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

В канун Нового Года вышла статья о том, что криптографическая утилита cryptoarmpkcs портирована на платформу Android. Так как утилита написана на tcl/tk, то в качестве механизма портирования использовалась технология Androwish.

Примечательно то, что достаточно загрузить защищенный контейнер PKCS#12, который содержит сертификат и закрытый ключ владельца, во внутреннюю память и можно подписывать документы различными типами электронной подписи ГОСТ Р 34.10-2012.

В целом утилита позволяет уже сегодня следующие операции:

  • подписать документ (Cades-BES, CAdes-T, CAdes-XLT1);
  • проверять полученную подпись на сайте Госуслуг;
  • работать с ЭП (PKCS7), включая добавление нового подписанта;
  • просматривать сертификаты/запросы на сертификаты:
  • скачивать дистрибутивы.

А в Новом году ожидается подключение программного токена PKCS#11 и возможность использования облачного токена.

С Новым Годом, С Новым Счастьем!

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

 , , , ,

TclTk
()

ЯП для души

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

Если нет души, то можно в рабочих целях

  1. Python 381 (22%)

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

  2. C 252 (15%)

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

  3. Другой (в комментариях) 220 (13%)

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

  4. C++ 197 (12%)

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

  5. Rust 106 (6%)

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

  6. Haskell 99 (6%)

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

  7. Go 94 (6%)

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

  8. Java 86 (5%)

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

  9. JavaScript 52 (3%)

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

  10. PHP 50 (3%)

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

  11. C# 49 (3%)

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

  12. Ruby 49 (3%)

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

  13. Delphi 48 (3%)

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

  14. Swift 10 (1%)

    ********

  15. SQL 8 (0%)

    ******

  16. Dart 8 (0%)

    ******

Всего голосов: 1709

 

KRex
()

Что делать, если кажется, что нашёл баг в ядре..

Форум — Development

.. ну первая версия понятна, проверить свой код.

Теперь о подозрениях:

http://lxr.free-electrons.com/source/drivers/base/dma-mapping.c#L189

Мне кажется, что должно быть наоборот, т.е. проверка на НЕ 0:

if (rc != 0) ...
Потому как dma_declare_coherent_memory возвращает 0 только в случае ошибки. Пруф:
 87 int dma_declare_coherent_memory(struct device *dev, phys_addr_t phys_addr,
 88                                 dma_addr_t device_addr, size_t size, int flags)
 89 {
 90         struct dma_coherent_mem *mem;
 91         int ret;
 92 
 93         ret = dma_init_coherent_memory(phys_addr, device_addr, size, flags,
 94                                        &mem);
 95         if (ret == 0)
 96                 return 0;
 97 
 98         if (dma_assign_coherent_memory(dev, mem) == 0)
 99                 return ret;
100 
101         dma_release_coherent_memory(mem);
102         return 0;
103 }

...

 20 static int dma_init_coherent_memory(phys_addr_t phys_addr, dma_addr_t device_addr,
 21                              size_t size, int flags,
 22                              struct dma_coherent_mem **mem)
 23 {
...
 34         mem_base = ioremap(phys_addr, size);
 35         if (!mem_base)
 36                 goto out;
 37 
 38         dma_mem = kzalloc(sizeof(struct dma_coherent_mem), GFP_KERNEL);
 39         if (!dma_mem)
 40                 goto out;
 41         dma_mem->bitmap = kzalloc(bitmap_size, GFP_KERNEL);
 42         if (!dma_mem->bitmap)
 43                 goto out;
 44 
...
 54         if (flags & DMA_MEMORY_MAP)
 55                 return DMA_MEMORY_MAP;
 56 
 57         return DMA_MEMORY_IO;
 58 
 59 out:
 60         kfree(dma_mem);
 61         if (mem_base)
 62                 iounmap(mem_base);
 63         return 0;
 64 }

Если это действительно баг, то куда постить? cast tailgunner, post-factum

 

UVV
()

Посоветуйте почитать про ПРАКТИЧЕСКУЮ маршрутизацию

Форум — Talks

Книги гуглятся, но дюже сильно теоретические... тоже, пожалуй, прочту, но интереснее осваивать параллельно с экспериментальной практикой.

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

Что кому нравится?

Идеально, для меня, что-то типа этого http://www.opennet.ru/docs/RUS/bash_scripting_guide/ (только про маршрутизацию, конечно)

 ,

pihter
()

Настоящий old school - ThinkPad x201, VW Smalltalk, GemStone/S 64, KDE, Notion

Галерея — Скриншоты

В копилку олдскульных скриншотов - не постановочная рабочая среда.

Верный ThinkPad x201 с Gentoo.

Рабочее окружение KDE5 и Notion в качестве WM.

VisualWorks Smalltalk как среда разработки и GemStone/S 64 как база данных - пилится подобие SIEM для внутренних нужд на основе купленного сканера Nessus.

PS. Нет, от шрифтов глаза не вытекают.

 , , ,

Darkman
()

С новым 2019 годом!

Новости — Linux.org.ru
Группа Linux.org.ru

Дорогие пользователи и анонимусы! Администрация поздравляет вас с новым 2019 годом.

Год выдался интересным. Если в прошлом году мы получили именные уязвимости, то в этом году были раскрыты уязвимости в самих процессорах практически всех популярных марок. Мы пережили с потерями и без нашествия SJW разных мастей, некоторым даже понадобилась помощь специалистов, а Линус наконец-то сходил в отпуск. Core OS был куплен Red Hat'ом, а Red Hat был куплен IBM'ом, что весьма порадовало инвесторов Red Hat и расстроило всех остальных. Mozilla исполнилось 20 лет, Slackware - 25. Взлетели и упали криптовалюты. GitHub стал частью Microsoft, но ничего плохого пока не случилось. Были новые релизы OpenBSD, FreeBSD, Haiku и даже Solaris. Оказалось, что у протокола Gopher еще есть пользователи. Регуляторы на трех континентах ломали интернет как могли, но не преуспели в своем деле.

LOR'у в этом году исполнилось 20 лет.

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

( Немного статистики )

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

 ,

Shaman007
()

Заворачивание траффика в виртуальную машину остальных виртуалок

Форум — Admin

Здравия! Есть необходимость завернуть весь траффик исходящий и приходящий от виртуалок в одну виртуалку, как пример такой виртуалки: OpenWRT. Предполагается использовать Debian 10 x64 и KVM. Как можно это сделать красиво?

 , ,

nesteroff561
()

2019 год и опять аутентификация...

Форум — Web-development

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

Сейчас наиболее популярно делать так: работаем только по https, при аутентификации передаем в явном виде пароль пользователя и логин (привет, man-in-the-middle!), сервер вычисляет хэш пароля, сравнивает его с хэшем из БД согласно данному логину, и высылает токен аутентификации. Далее пользователь этот токен в куках или local storage сохраняет и при авторизации каждый раз высылает его серверу. Просрочил токен - проходи аутентификацию заново.

Основных недостатка здесь два: во-первых, хоть это и сложно, но возможно на прокси-https сделать man-in-the-middle; во-вторых, требуется SSL (т.е. генерь самоподписной сертификат или покупай «кошерный»).

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

Скажем, самый простой способ: при аутентификации у сервера запрашивается случайно сгенеренный ключ. Он используется как соль: к хэшу (я надеюсь, жабоскрипт умеет sha512?) пароля добавляется эта соль и вычисляется новый хэш. Данный хэш с логином пользователя отправляются серваку. Тот делает аналогичные вычисления и сравнивает с данными из БД. Т.е фактически аутентификация заключается в запросе ключа. Через какое-то время ключ «прокисает» и надо пройти заново процедуру. Авторизация заключается в регулярной отправке серверу пары логин-хэш. В данном случае можно вообще в local storage браузера хранить хэш пароля пользователя и вообще никогда больше не требовать ввода логина/пароля (покуда пользователь не нажмет logout, в результате чего хэш пароля из local storage будет удален).

Какие косяки могут быть в этом способе?

 

OnlyAsk
()

Xочу мигрировать в интересную компанию в Москве

Форум — Job

Хочу оставить фриланс и поработать полный день в офисе.

Опыт администрирования linux почти 20 лет. Делал вещи которые сейчас принято называть devops, когда это слово еще не стало мейнстримом. Если чего то не знаю, то умею читать документацию.

Ищу адекватную компанию, где на собеседовании спросят фундаментальные вещи, а не как сделать XXX в продукте YYY, и кем вы видите себя через 5 лет в нашей компании.

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

Некоторый набор навыков: debian, dns, MTA, backup, web, nginx, php-fpm, memcached, redis, mysql, postgresql, shell, ansible, docker.

Последние лет 7 фриланс(админю, программирую), до этого аналитик в разработке, админ в банках… каких-то супер названий компаний и великих достижений нет…

Готов переехать завтра в Москву и сразу выйти на работу.

 ,

serg1982
()

Bromite 78.0.3904.130 с поддержкой пользовательских фильтров ссылок

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

Представлен релиз Android браузера Bromite версии 78.0.3904.130, основанного на Chromium, обеспечивающего расширенные возможности блокировки рекламы и улучшения приватности пользовательских данных. Важное нововведение — это реализация популярного на трекере запроса о добавлении функции фильтрации ссылок содержимого по настраиваемым пользовательским фильтрам.

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

 , bromite, ,

linuks
()

зависимости wine переводят большу часть системы на x32 программы

Форум — General

В вики написан список программ, которым надо установить use flag abi_x86_32, я их прописал, но этого мало, она требует больше и чем больше я меняю, тем больше список программ для которых мне нужно использовать этот флаг. Вот ошибка, исправляя которую, я открываю портал в ад зависимостей:

sudo emerge --ask  wine

These are the packages that would be merged, in order:

Calculating dependencies... done!

!!! The ebuild selected to satisfy ">=sys-auth/polkit-0.110" has unmet requirements.
- sys-auth/polkit-0.115-r4::gentoo USE="introspection nls -consolekit -elogind -examples -gtk -jit -kde -pam (-selinux) -systemd -test" ABI_X86="(64)"

  The following REQUIRED_USE flag constraints are unsatisfied:
    exactly-one-of ( consolekit elogind systemd )

(dependency required by "sys-fs/udisks-2.8.4::gentoo" [ebuild])
(dependency required by "app-emulation/wine-vanilla-4.0.2::gentoo[udisks]" [ebuild])
(dependency required by "virtual/wine-0-r5::gentoo" [ebuild])
(dependency required by "wine" [argument])

Я что-то делаю не так? Почему это происходит? Или так и должно быть?

 , ,

towe
()

Старый добрый FVWM

Галерея — Скриншоты

Вдохновленный «некрофильными» скриншотами, решил кардинально изменить конфигурацию своего FVWM. Конфигурация минимальная. В системе 900 пакетов. Из графических приложений только браузер Firefox-esr (есть и w3m, но он для простых сайтов) и торрент качалка — transmission-gtk. Все остальное — терминальные программы (irssi, fff, mpg123 со скриптом conplay, есть и moc), gotop, видео — mpv.

Conky почти дэфолт. Я только убрал ненужную мне инфу, и добавил вывод mocp.

Использую лишь xterm. Почему он? Потому, что быстрый.

Терминальные шрифты — идущие в поставке Xorg. Я только изменил их размер. А в самой системе — DejaVu Sans.

Получилось удобно (для меня).

Кому интересно, конфиги, как всегда, лежат вот тут.

 ,

Odalist
()

CAINE 11.0 — дистрибутив для криминалистического анализа и поиска скрытой информации

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

Выпущен специализированный Linux-дистрибутив CAINE 11.0, который предназначен для проведения криминалистического анализа и поиска скрытой информации. Эта Live-сборка основана на Ubuntu 18.04, поддерживает UEFI Secure Boot и поставляется с ядром Linux 5.0.

Дистрибутив позволяет анализировать остаточную информацию после взлома на системах Unix и Windows. В комплекте идёт большое количество утилит для работы. Отдельно отметим специализированный инструмент WinTaylor для анализа ОС из Редмонда. Из других утилит можно упомянуть GtkHash, Air, SSdeep, HDSentinel, Bulk Extractor, Fiwalk, ByteInvestigator, Autopsy, Foremost, Scalpel, Sleuthkit, Guymager, DC3DD, а также скрипты к файловому менеджеру Caja, которые позволяют проверять все компоненты ФС, в том числе дисковые разделы, реестр Windows, метаданные и удалённые файлы.

Новая система поддерживает по умолчанию монтирование разделов только на чтение. Также в дистрибутиве сокращено время загрузки, а загрузочный образ можно копировать в ОЗУ. Добавлены утилиты для получения данных из дампов памяти и остаточной информации из образов дисков.

Скачать новинку можно по ссылке. Дистрибутив будет полезен системным администраторам, компьютерным криминалистам, судебным экспертами и специалистам в области информационной безопасности.

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

Ruslan5g
()

dwm uselessgap разное расстояние

Форум — Desktop

патч и результат Интересно, почему расстояние между мастером и стеком и между окнами стека разное ?

 

bryak
()

имитация расстояния межу окнами в i3

Галерея — Скриншоты

Добрый день, вечер, ночь и еще что-нибудь!

На картинке: ArchLinux

  • естественно - i3
  • терминал - urxvt
  • редактор - gvim
  • файловый менеджер - ranger
  • плейер - mpd, ncmpcpp (ну тут все понятно)
  • вьювер pdf/djvu - zathura
  • статусная строка - i3bar, dzen2, conky+dzen2 (для вывода раскладки)

шрифты:

  • статусная строка: Ohsnap
  • терминал: WerfProFont
  • gvim: Monaco

может быть ШГ, но удобные

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

Этот скрин еще конечно не доработан. В статусной строке хочется все-таки сделать уголки как в powerTop (так и не понял как это делается). И если кто знает как быстро менять цветовые схемы в i3 без редактирования .i3/config пожалуйста поделитесь (в идеале нужна глобальная переключалка цветовых схем, что бы затрагивала не только i3, но и gtk, firefox, vim, urxvt).

 ,

pechenu
()

Спасите мои ШГ!!!

Форум — Desktop

Хочу отключить сглаживание и включить хитинг,с чего начать?Я читал,что нужно

В fontconfig использовать - 10-no-antialias.conf, чтобы отключить сглаживание, и 10-style-full.conf - чтобы включить полный хинтинг.

Так вот,где 10-style-full.conf и 10-no-antialias.conf?Что еще надобно совершить?

Вывод ls /etc/fonts/conf.d/ :

10-hinting-slight.conf 49-sansserif.conf 69-unifont.conf 10-scale-bitmap-fonts.conf 50-user.conf 75-yes-terminus.conf 20-unhint-small-vera.conf 51-local.conf 80-delicious.conf 30-metric-aliases.conf 60-generic.conf 90-synthetic.conf 40-nonlatin.conf 60-latin.conf README 45-generic.conf 65-fonts-persian.conf 45-latin.conf 65-nonlatin.conf

Вывод ls /etc/fonts/ :

conf.avail conf.d fonts.conf fonts.dtd

Вывод ls /etc/fonts/conf.avail/ :

10-autohint.conf 11-lcdfilter-legacy.conf 65-fonts-persian.conf 10-hinting-full.conf 11-lcdfilter-light.conf 65-khmer.conf 10-hinting-medium.conf 20-unhint-small-vera.conf 65-nonlatin.conf 10-hinting-none.conf 25-unhint-nonlatin.conf 66-noto-mono.conf 10-hinting-slight.conf 30-metric-aliases.conf 66-noto-sans.conf 10-no-sub-pixel.conf 40-nonlatin.conf 66-noto-serif.conf 10-scale-bitmap-fonts.conf 45-generic.conf 69-unifont.conf 10-sub-pixel-bgr.conf 45-latin.conf 70-no-bitmaps.conf 10-sub-pixel-rgb.conf 49-sansserif.conf 70-yes-bitmaps.conf 10-sub-pixel-vbgr.conf 50-user.conf 75-yes-terminus.conf 10-sub-pixel-vrgb.conf 51-local.conf 80-delicious.conf 10-unhinted.conf 60-generic.conf 90-synthetic.conf 11-lcdfilter-default.conf 60-latin.conf

P.S.Поможете?!

P.P.S.Усилиями товарищей МЫ победили проблему с ШГ.Теперь немного теории:

1 conf.d — текущие настройки, которые представляют собой ссылки на доступные настройки в conf.avail .Соответственно, если тебе надо включить настройку какую-то, создаешь на нее ссылку в conf.d из conf.avail Если она у тебя включена и надо отключить — удаляешь ссылку из conf.d.

2 Конфиги надо класть в ~/.config/fontconfig/conf.d/ Путь конфигов: $XDG_CONFIG_HOME/fontconfig/conf.d/NN-name.conf где где NN состоит из двух цифр, как 00, 10, или 99 NN-name.conf как угодно можно называть, но первые 2 символа приоритет (цифры) тире и на конце .conf: NN-your_custom_name.conf

3 Полезные ссылки 1,2,3,4,5

P.P.P.S.Хочу выразить благодарность руководству ЛОРА, а также подякувати отдельно взятым соратникам nvl Im_not_a_robot e1nste1n

 , , , ,

AlexPop2
()