• В чём разница между android и java?

    ChronosX
    @ChronosX
    Android -- это операционная система. Приложения под нее пишутся (обычно) на Java (или Kotlin, хотя есть ещё много ЯП, на которых можно писать приложения под Android).
    Ответ написан
    Комментировать
  • Книга или курс начальной и дискретной математики?

    sgjurano
    @sgjurano
    Разработчик
    Сначала убедитесь, что у вас всё в порядке со школьной математикой, лучше всего для этого подходят учебники Киселёва.

    Потом на базовом уровне осознайте математический анализ (например по книге "Как выжить после предельного перехода?" Пантаева), затем поднимите линейную алгебру (для этого достаточно учебника Куроша "Курс высшей алгебры"), останется лишь добавить немного теории вероятностей (первого тома Феллера для этого более чем достаточно).

    Если хочется именно дискретной математики, то можно курс "Дискретные структуры" Дайняка на степике порешать, если захочется ещё, то "Конкретную математику" Кнута :)
    Ответ написан
    2 комментария
  • В каком районе Питера больше всего ИТ-компаний (желательно с разработкой на Java)?

    @E_Eugene
    Я бы выделил несколько "кластеров" в городе:
    1. Северо-запад - Беговая/Ст.Деревня/Пионерская/Черная речка
    2. Восток - Пл.Ленина/Новочеркасская/Ладоджская
    3. Юг - Техноложка/Фрунзенская/Моск.Ворота/Электросила + небольшая часть Московская > Пулковское ш.
    4. Васильевский остров - тут и "линии", и Приморская
    5. Центр и Петроградка.

    По поводу жилья - если переезжаете из другого города, главной ошибкой будет покупка недвижимости сразу. Я не знаю, может для вас сумма в 5-7 млн. не кажется чем-то выдающимся, но по-моему тратить её нужно с умом.
    Я видел желание жить на Петроградке, и, конечно, я вряд ли переубежу кого-то живущего уже там, это определенная секта, которая с пеной у рта будет доказывать, что это лучшее место на Земле. Но есть определенные проблемы:
    1. Отсутствие крупных магазинов, т.е. продукты будете покупать либо в магазинах пешей доступно с крайне скромным выбором, либо ездить в другие районы.
    2. Отсутствие зелени: ваши лучшие друзья будут дворы-колодцы, асфальт и пыль. Для кого-то это романтика, но она быстро пройдет, как и надоест гулять исключительно в парке на Крестовском.
    3. Транспортный коллапс: во-первых со всех сторон вы ограничены мостами, случись что и ваш район в блокаде. Футбольный матч, приезд какого-то чиновника, еще что-то способно перекрыть вам все пути побега. Ну да, и в момент навигации нужно внимательно следить за временем, чтобы случайно не опоздать на мосты и тогда придется объехать пол-города, чтобы попасть домой.
    4. Как и в любом другом центральном районе будьте готовы к тому, что машину, скорее всего будет сложно припарковать, а в ближайшие пару лет еще и платная парковка к вам может придти, в садик/школу попасть будет сложно, т.к. желающих много, а новых объектов уже не открывают, здесь есть новостройки, но это не гарантирует отсутствие проблем с коммуникациями, т.к. во-первых, коммуникации до дома старые, во-вторых, качество нынешнего строительства вызывает много вопросов.
    В принципе, всё это так же легко перекладывается на Васильевский остров, ситуация схожая.

    Если рассматривать центр, то наиболее благоприятным местом будет Коломна - тихо, спокойно, это еще не считается "элиточкой", что сказывается на ценнике, есть определенные проблемы с общественным транспортом (нет метро), но на авто он относительно свободен и он не транзитный, что в лучшую сторону сказывается на воздухе.
    "Золотой треугольник" - дорого и не комфортно, очень много людей, круглосуточные пробки, и хостелы/мини-отели в каждой второй парадной.
    Вполне неплох участок за Фонтанкой, в районе Загородного. За исключением зелени и отсутствием крупных магазинов особо сильных проблем не назову.
    Район Чернышевской неплох, но "элитен" и цены в нем сильно завышены, очень сильная социальная пропасть, в одной парадной могут быть клоповники-коммуналки с алкашами и "аппартамента" какого-нибудь господина на Rolls-Royce. В силу этого, регулярные конфликты обеспечены. Ну и метро Чернышевская в часы пик - сущий ад.
    Лиговский и Пески - неоднозначно, слишком много "питерского" духа в виде коммуналок и алкашей.
    Московский район - идеален :) Много зелени, недвижимость в разумных пределах, пробки бывают, но много путей объезда. Инфраструктура вся в порядке.
    Естественно, это исключительно моё мнение и кто-то с ним может не согласится.
    На мой взгляд идеальное жилье получается когда:
    1. Дом не большой
    2. Жильцы относятся примерно к одному социальному классу
    3. Рядом есть вся необходимая инфраструктура
    4. Въезды/выезды и района не ограничены 3-4 путями, из которых часть мосты и ж/д переезды
    5. Есть зелень
    Ответ написан
    4 комментария
  • Какие можно почитать книги "по самому низкому уровню" компьюетров?

    DexterHD
    @DexterHD
    Software Engineer, Teamlead, CTO
    Сначала читаете
    "Чарльз Петцольд Код - Тайный язык информатики".
    В ней будут даны принципы от изобретения реле до современных процессоров.
    Далее:
    "Э.Таненбаум - Архитектура компьютера"
    "Э.Таненбаум - Современные операционные системы"
    "Э.Таненбаум - Сети"
    Ответ написан
    Комментировать
  • Стоит ли браться за сложные задачи?

    @frozen_coder
    Java-developer
    "К черту всё! Берись и делай!" :)

    Вы описали несложную задачу (не писал ботов для VK, вот для Телеграмма это делается на раз-два, а уж с XML в java что только не делали + Spring'овое семейство фреймворков, которые покрывают дофига всего), но для ваших знаний будет самое оно для изучения. Это же реальный проект, которым Вы будете пользоваться. А не синтетический пример из книжки.

    Срочно начинайте делать без сомнений. Так ведь и просходит самое продуктивное изучение - есть проблема, не знаете как делать, узнаете и делаете. Главное ешьте слона по частям, декомпозируйте задачу на подзадачи по максимому и потихоньку пилите их по одной.
    Ответ написан
    Комментировать
  • Существует ли лаконичное описание математики?

    myjcom
    @myjcom
    Математика за 30 секунд
    Год: 2014
    Автор: под ред. Ричарда Брауна
    Переводчик: Карнаушко И.
    Издательство: Рипол Классик
    ISBN: 978-5-386-07012-0
    Серия: Узнать за 30 секунд
    Язык: Русский

    Математика. 50 идей, о которых нужно знать
    Год издания: 2014
    Автор: Крилли Т.
    Переводчик: Ш. Мартынова (с англ.)
    Издательство: Фантом Пресс
    ISBN: 978-5-86471-670-0
    Язык: Русский

    Магия математики: Как найти x и зачем это нужно
    Год издания: 2016
    Автор: Бенджамин А.
    Переводчик: Д. Глебов
    Издательство: Альпина Диджитал
    ISBN: 978-5-9614-4466-7
    Язык: Русский

    Удовольствие от x
    Год: 2014
    Автор: Строгац С.
    Издательство: Манн, Иванов и Фербер
    ISBN: 978-500057-008-1
    Язык: Русский

    Математика без формул
    Год выпуска: 1995
    Автор: Пухначев Ю., Попов Ю.

    Беседы о математике. Книга 1. Дискретные объекты
    Год выпуска: 2002
    Автор: Болтянский В.Г., Савин А.П.
    Жанр: Математика
    Издательство: МЦНМО
    ISBN: 5-94057-040-2
    Язык: Русский

    Мало ли...
    Логарифмическая линейка
    Год издания: 1958
    Автор: Кущенко В.С.
    Жанр или тематика: Математика
    Издательство: Судпромгиз
    Язык: Русский

    Счётная линейка
    Год выпуска: 1967
    Автор: Румшиский Лев Зимонович
    Издательство: "Наука"
    УДК: 681.143:518.5
    Язык: Русский
    Ответ написан
    Комментировать
  • Можно ли восстановить исходники из apk?

    Одного dex2jar мало

    1. Качаем dex2jar-0.0.9.8.zip (номер версии может изменяться) и извлекаем все файлы в желаемую папку, например D:\Decompile .
    2. Качаем Java Decompiler, я использовал JD-GUI и извлекаем файлы для удобства в ту же папку, куда и dex2jar.
    3. Качаем apktool и apktool-install-windows-r04-brut1.tar.bz2 и извлекаем файлы уже в системную папку. По умолчанию C:\Windows. (Не забываем скачать второй архив)
    4. Берем нужный apk файл и кладем в папку с dex2jar и Java Decompiler. В примере приведу декомпиляцию приложения Прикрепленный файлCalculator.zip ( 66,18 КБ )
    5. . (надо извлечь из архива).
    6. Открываем Командную строку (Обработчик команд Windows) в вышеупомянутой папке (В папке по пустому месте при зажатой кнопке Shift нажимаем правую кнопку мыши и выбираем Обработчик команд Windows).
    7. Вводим команду dex2jar Calculator.apk и если все прошло хорошо, в той же папке появится файл Calculator.apk.dex2jar.jar
    8. Запускаем jd-gui и открываем полученный на предыдущем шаге файл. (На Windows 7 открывать с правами администратора и с совместимостью Windows XP SP3)
    9. Выбираем пункт меню File-Save All Sources и сохраняем.
    10. Извлекаем полученный zip архив.
    11. Помещаем полученную папку в папку src (надо предварительно создать).(Что бы получилась примерно такая структура D:\Decompile\Calculator\src\com\android)
    12. Опять же в командной строке вводим команду apktool d Calculator.apk Calculator, где Calculator.apk-имя пакета, Calculator-папка для декомпиляции
    13. Если все хорошо, тогда в указанной папке будут исходники в двух форматах (java и smali), ресурсы и файлы AndroidManifest.xml, apktool.yml
    14. Все готово, исходники получены. Правда после декомпиляции в коде есть, можно сказать, ошибки, я заметил пока только что вместо true и false стоят 1 и 0 соответственно.


    Взято с 4pda гуглится за пару секунд
    Ответ написан
    4 комментария
  • Как воспроизвести wav файл на чистом c++ без сторонних библиотек?

    Nipheris
    @Nipheris Куратор тега C++
    1. Курите формат wav-файлов, он не особо сложный, написать код чтения не должно составить проблем.
    2. Разбираетесь с аудио-API различных ОС. Убеждаетесь, что для разных ОС реализация будет разная.
    3. Обеспечиваете необходимые преобразования прочтенных из wav данных о звуковой волне в данные, готовые к передаче в аудио-API.
    4. Результат.
    Ответ написан
    1 комментарий
  • Можно ли переделать программу на FoxPro 2.6 в современный вид?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А вам и не надо разбираться в DOS, достаточно более-менее разбираться в предметной области и иметь исходники старой программы. Ну или не иметь исходников, но хорошо разбираться в предметной области, чтобы понять логику работы программы.
    Средства работы с DBF есть практически под все языки, так что можно написать как программу, работающую с теми же базами, так и конвертировать базы в другой формат и сделать хоть десктопное, хоть web-приложение.
    Ответ написан
  • Как мне быть в такой ситуации.Куда двигаться дальше?

    Хреновое у тебя настроение, 33 для програмиста не возраст, мне 42 и я несколько раз проходил путь от джуна до синьора, просто для встряски мозгов, последний раз менял специализацию в 39. Делай упор на английский, с хорошим английским работы море, при чем на удаленке платят больше чем на аутстаффе, правда и риски больше, кстати чтобы устроится на мидла, не запись в трудовой нужна "работал джуном год", а фактическое количество собранных граблей на технологии, на которые ты второй раз не наступишь, на собеседованиях просто спрашивают по матрице, поэтому необходимые навыки ты легко можешь узнать, просто регулярно проходя собеседования и подчитывая и реализуя то, на чем завалился. Завалив собеседование ты не ЧСВ должен понижать, а просто понимать, что ты узнал, что нужно доучить и идти на следующее собеседование.
    Ответ написан
    Комментировать
  • Разрешено ли использовать C функции в C++?

    @Codebaker
    Всё умею, всё могу!
    Можно долго рассказывать про плохой стиль или разницу между парадигмами программирования.
    Можно холиварить, а можно знать, что 90% кода никто никогда не увидит.
    Также можно вспомнить, что С++ сам автор называл "С с классами".

    Так что да, можно.
    Ответ написан
    1 комментарий
  • Как и чем можно реализовать GUI приложения в качестве графической оболочки Linux?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Не слишком понятно - хотите написать свое приложение с гуем или же хотите запускать существующее приложение при старте?
    Если первое - существует вагон и еще тележечка тулкитов - правда большинство из них старые и страшные.
    - Стандартный X Toolkit
    - Tk
    - Motif
    ...и что-то там еще было. Ну, qt разумеется, но qt - это не про экономию ресурсов :)
    Если второе - запускать программу вместоWM Там возможно с ключами запуска придется пошаманить, чтобы сразу растянуть на полный экран - ведь кнопок управления не будет!
    Как запускать? Через .xinitrc, если Х стартует с DM или через startx - если вручную.
    Ответ написан
    Комментировать
  • Где найти книгу по методике изучения иностранных языков Якова Трахтенберга?

    @BHop
    Дилетант широкого профиля
    Я так понял, что эта книжка издавалась только в США и существует лишь на языке оригинала (англ.). Найти в электронном виде её можно на gen.lib.rus.ec по запросу "Trachtenberg System"
    Ответ написан
    3 комментария
  • Каков статус языка Rust в данный момент?

    @freecoder_xx
    Rust развивается стабильно, новые возможности и исправления вводятся с каждым релизом раз в 6 недель. Замеченные баги тоже исправляются оперативно в нерегулярных минорных релизах. Иногда такая динамика развития даже может служить препятствием: многие "живые" библиотеки требуют новой версии компилятора, но не всякая компания способна быстро обновлять его на своих проектах.

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

    Что касается веба - вот тут есть список актуальных компонентов: www.arewewebyet.org

    Какого-то единого сборника лучших практик использования Rust, насколько я знаю, пока нет. Много полезных советов есть в официальной документации (в так называемых Книгах), а также разбросано по разным отдельным статьям. Однако, существуют списки полезных статей, которые помогут найти среди них нужную. Например эти:
    https://github.com/ctjhoa/rust-learning
    https://github.com/brson/rust-anthology/blob/maste...

    В новых проектах Rust используется, и пока тенденция идет на расширение. Вот на этой странице вы можете посмотреть, какие компании используют Rust сейчас и для чего: https://www.rust-lang.org/en-US/friends.html

    Итак, если вы планируете использовать Rust в производстве, готовьтесь вот к чему:
    1. Довольно высокий порог входа в язык. Тут нет особой сложности, просто потребуется практика на языке и поначалу время на следование советам компилятора по устранению постоянно возникающих ошибок компиляции.
    2. Достаточно частые обновления компилятора по добавлению новых возможностей в язык. Это может приводить к тому, что нужная вам библиотека будет требовать свежую версию компилятора.
    3. Сыроватые библиотки. Вероятно, вам придется их слегка дорабатывать под себя.
    4. Rust упрощает сложное, но усложняет простое. Для совсем простых проектов, не требующих высокой производительности и серьезных доработок в будущем, возможно, Rust будет не лучшим выбором.
    Но что вы получите от использования Rust?
    1. Высокую производительность программ, автоматическое управление памятью без сборщика мусора.
    2. Высокую надежность и защищенность программ, устранение большого количества потенциальных проблем на этапе компиляции.
    3. Достаточно легкий и безопасный процесс рефакторинга и доработки программ, благодаря развитой системе типов.
    4. Развитую систему управления зависимостями проекта.
    5. Действительно хороший универсальный инструмент: Rust подойдет и для прототипирования, и для разработки, причем для любого типа программ (утилиты, настольные приложения, веб-приложения, мобильные приложения, встраиваемые системы). Хорошая поддержка пока еще есть не для всего, но на перспективу - это большой плюс.
    Ответ написан
    7 комментариев
  • Каков статус языка Rust в данный момент?

    @snuk182
    Rust развивается основательно. Не семимильными шагами, потому что каждый шаг согласовывается с сообществом и ресурсами на его воплощение, но достаточно быстро, и крупных жалоб пока нет (кроме кривой обучения, но это субъективно, главное понять принцип владения данными). Best Practices есть. Для новых коммерческих проектов его выбирают в основном в отрасли блокчейна и специальных вебсервисов с быстрым откликом. Веб фреймворков россыпь, пока лидируют Actix и Rocket. Десктопного гуя стабильного нет, пользуются биндами к gtk.
    Ответ написан
    5 комментариев
  • Как правильно использовать строки в плюсах?

    @Mercury13
    Программист на «си с крестами» и не только
    • std::string — как правило, если не указано противное.

    • QString, AnsiString/UnicodeString и прочие — в соответствующих фреймворках, обычно очень близко к интерфейсным функциям.

    • char* — практически не используется в реальном коде. В основном для оптимизации, если есть собственное управление памятью. Довелось как-то в собственном разборщике XML (работает в 2,5 раза медленнее рекордсмена, pugixml. Зато даже это в разы быстрее Excel’я, пространства имён «из коробки», расход памяти мизерный и программирование простейшее.)
    Зато по-чёрному используется его const-аналог.

    • const char*. Это может быть одинокий const char* + нуль-терминированная строка, или указатель+длина, или указатель на начало + указатель за конец.
    1. Если ожидается, что в функцию будем передавать строковый литерал.
    void writeEnum(st::Stream& st, int value, const char* names[]) {}
    
    enum class Letter { A, B, C, …, Z, NN };
    const char* natoNames[static_cast<int>(Letter::NN)] = { "alpha", "bravo", "charlie", … };
    writeEnum(someStream, static_cast<int>(Letter::E), natoName);

    2. Если операцию со строкой можно произвести «на месте», не заводя новую память: (trim, как известно,— обрезка пробелов в начале и конце)
    void trim(const char*& beg, const char*& end);

    3. Если структура данных паразитирует на чужих строках, не заводя своей памяти. Особенно если конструкция строк неизвестна (например, при передаче данных из плагина в плагин).
    struct ParasiteString { const char *beg, *end; };

    4. В библиотеках, если они реально настолько компактные, что нет нужды обязательно подключать жирный STL.

    • char[] — только как оптимизация, когда предельная длина строки известна и невелика.
    wchar_t* myFtos(double value, wchar_t* buf, const FloatFormat& format) {}
    
    wchar_t buf[100];
    myFtos(100.500, buf, FloatFormat::NICE);
    Ответ написан
    Комментировать
  • Прошу помочь составить план\стратегию\порядок обучения, радиоэлектронике\пайке\и т.п.?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    Ну тут два важных вопроса, как и в любой науке - теория и практика.
    Для начала нужно изучить теорию, понять смысл, суть, физику, основы процессов и движения электронов, p-n-переходы, термопреобразования, вольт-амперные характеристики, законы токов, закон Ома и т.д.
    На этот случай в СССР издано много хороших классических книг. Их можно погуглить и скачать. Либо можно купить в бумажном варианте, есть классика уже с эндцатым переизданием, до сих пор актуальна.
    Есть и новые книги. На любой вкус. Как основа и база, можно порекомендовать таких авторов: Хоровиц, Хилл, Шило, Корис, Титце, Шенк, Фрунзе, Банк, Баскаков, Гоноровский, Калашников, Иванов, Шахгильдян, Олсон, и другие.
    Это только что сразу же вспомнил. Вообще заяндогуглите по тегам: основы электроники, радиотехники, схемотехники. Не забывайте, что радиотехника или электроника подразделяется глобально на аналоговую и цифровую.
    Собственно по каждому разделу свои книги и принципы познания. Не забывайте про теорию цепей, способы рассчета их, тут будет полезной линейная, аналитическая, матричная алгебра. При изучении дискретной\цифровой техники или электроники будет необходимо знать дискретную математику и булеву алгебру. Это все основы, это все теория. Также полезен старый добрый журнал "Радио".
    Любую теорию подкреплять необходимо практикой. Рассчеты - рассчетами, решением различных задач, особенно практических. Полезны будут для изучения даже задачи из сборника задач по физике (раздел электричество), радиолектронике, схемотехнике. То есть теоретико-практические задачи - именно тренируют умение применять базу знаний для анализа и рассчетов.
    Ну и собственно после этого самая что ни на есть настоящая практика - пайка, монтаж, проектирование в CAD, работа руками...
    Очень важным будет являться умение пользоваться современными средствами рассчетов и измерений: калькулятор, компьютер, программатор, осциллограф, мультиметр, вольтметр, амперметр. Знать протоколы обмена между периферией и цифровой аппаратурой.
    Ну и самым наверное главным инструментом будет паяльник с всей оснасткой: припои, пасты, жала, канифоли, жиры, шкурки, зачистки, и другие колюще-режущие штуки, способные прийти на помощь при монтаже или пайке.
    В настоящее время в китайских интернет-магазинах есть готовый toolkitы, то есть наборы для обучения электро-монтажу-программированию-конструированию цифровых устройств, также там можно заказать и провода и макетные платы.
    В комплекте с toolkitами идут бывает и инструкции и методики, даже полезно будет приобрести вариант для детей, тоже бывает интересно.
    В интернете распространен буржуйский журнал по проектированию устройств на основе Raspberry Pi, различные проекты. Можно обучаясь попробовать и это на практике, там и пайка и программирование.
    Вообще, изучать электронику и позновательно и увлекательно, в настоящее время для этого все есть. Единственное, подумайте, зачем вам это? Просто как хобби - одно, а если вы хотите стать профессиональным проектировщиком радиоаппаратуры - то сложновато будет самостоятельно все изучить, так как нужны более фундаментальные знания. В таком случае без высшего образования тут никуда не деться. Так что какова ваша мотивация, каковы ваши цели - такова будет и соответствующая стратегия.
    Если хотите базовые знания, реальный и крутой диплом о высшем образовании - то учите математику с физикой, информатику и английский - и вперед в ВУЗ!
    Удачи в постижении электротехнических наук!
    Ответ написан
    5 комментариев
  • Почему действия после функции происходят раньше, чем заканчивает выполнение сама функция?

    IGHOR
    @IGHOR Куратор тега Qt
    Qt/C++ DEV/CTO
    Можете организовать ожидание, QEventLoop:exec запустить после подключения к слоту QEventLoop:quit сигнала когда запрос завершен.

    Вот мой пример для блокирующего запроса, его можно засунуть в функцию, и при ее вызове будет ожидание ответа
    QNetworkRequest request(url); // Created by Ighor July
    QNetworkReply *reply = manager->get(request);
    reply->setParent(this);
    
    int timeoutMS = 60000;
    QEventLoop loop;
    connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
    QTimer::singleShot(timeoutMS, &loop, &QEventLoop::quit);
    loop.exec();
    
    QByteArray answer = reply->readAll();
    reply->deleteLater();


    Либо делать все без блокировок, что предпочтительнее, и qDebug вызывать в слоте получившему сигнал что запрос завершен.
    Ответ написан
    2 комментария
  • Как создать полностью пустое приложение на С++ в QT Creator?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Там кучу гемора. Просто скрыть рамку можно буквально одной строчкой, но чтобы не сломать ресайз и аэро в виндовс нужно уже прилично кода накрутить.
    https://github.com/Bringer-of-Light/Qt-Nice-Framel...
    https://github.com/dfct/TrueFramelessWindow
    Ответ написан
    Комментировать
  • Странный дизайн Rust?

    @DoumanAsh
    >Во первых, почему указатели в Rust называются ссылками?
    Во первых референс это не указатель.
    Указатели это *const _ и *mut _
    То что референсы имеют разыменование не делает их указателями, да и пользоваться этим не надо обычно.

    Такой вопрос уже задавался если тебе интересно почитай https://users.rust-lang.org/t/solved-why-do-refere...

    Во вторых ты можешь почитать о референсах
    https://doc.rust-lang.org/1.10.0/book/references-a...
    https://doc.rust-lang.org/1.4.0/nomicon/references.html
    Ответ написан
    Комментировать