Pull to refresh
12
0
Александр Коновалов @neit_kas

UI программист

Send message

Местами не могу согласиться. Видимо от компании зависит. У нас "в топку всё, переписываем" - это крайне редкий кейс. Зачастую допилить всё же оказывается выгоднее по времени, хоть и потенциально будет с костылями (если не хватило масштабируемости).

С проектами на оутсорс не сталкивался. Поэтому сложно судить, как там лучше. Но для домашних пет проектов стараюсь какую-никакую документацию поддерживать. Правда обычно это делаю не попутно: делю проект на небольшие спринты и в конце спринта доделываю доку. Конечно там далеко не doxygen со всякими вики. Не редко даже просто в свободной форме бывает с кратким описанием модулей. Если подзабиваю, а потом возвращаюсь, оказывается полезным, особо учитывая моё косноязычие на нейминг. Ну и unit тесты. С ними даже интереснее выходит. Кейсы сначала описываю просто в markdown, который потом использую как чек лист. Этот файл после и заливаю в репу (или бью на комменты к кейсам). Коммент/файл помогает понять, о чём каждый кейс, а остальное (особенности работы частей основного функционала, граничные случаи, подводные камни) уже по коду теста.

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

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

Духовые - это стабильный синус определённой частоты. Гляньте например флейту на спектроанализаторе. Вот музыкант воспроизводит ля первой октавы. На спектроанализаторе увидите основную (самую амплитудную) гармонику 440Гц (+/- какая-то погрешность).

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

С голосом сам не особо в курсе. Самое чистое пение, которое встречал, давало 2-3 гармоники, которые в принципе были одинаковыми по амплитуде. Что берётся за ноту - не знаю.

Возможно это связано с механизмом восприятия или обработки звука.

Хороший вопрос. Я одинаковые ноты разных октав не могу воспринять как что-то похожее. То есть, я не понимаю, что мне брать за этот критерий похожести. Вот есть у нас красная тарелка и синяя тарелка. Да, я могу сказать, что они отличаются цветом, но также могу сказать, что они похожи формой, размером, материалом (если они этим действительно похожи). То есть, тарелка - это такой объект, который имеет несколько атрибутов. Нота же имеет один атрибут - частоту. И как-то не понятно, почему критерий похожести основывают на увеличении частоты в 2 раза. Почему не в 3 или не в 5?

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

Если смотреть глубже, то ещё интереснее. Вот есть флейта. Там обычно одна гармоника. С привязкой к частотам всё ок. Гитара - затухающий синус. Так понимаю, за ноту берётся частота самой амплитудной части. В принципе, ок. Голос. Слышу чистое пение, включаю спектроанализатор. В чистом голосе две гармоники, по силе равные (какую-нибудь "А" или "У" потянуть). Какая из них берётся за ноту? Или, ещё интереснее, хор, не особо чистое пение, хрипота, какой-нибудь гроул. Там вообще их может быть знатная куча. Что берётся за ноту - не понимаю.

что наш слух устроен так, чтобы отличать звук, частота которого выше на 1/3 и на 1/2.

Но это же тоже от конкретного человека зависит, как я понимаю. Брали в среднем по планете?

Простым языком: ...

Ничего себе простым языком. Какая гамма? Какой тон-полутон? Что значит энгармонически?

ля-диез и си-бемоль - это одна и та же клавиша

А почему называются по разному?

И напоследок: мои данные есть только в госуслугах и налоговой

Тогда вы вероятнее всего просто не ЦА такого рода проекта. Много знаю мест, где регистрация происходит по тому же ВК. Там люди чуть ли не глядя кликают "Разрешить", когда ВК говорит, что сайту N нужен телефон, дата рождения, емеил и ещё уйма всего.

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

Проблема в том, что есть ещё окружение. То есть, некий Вася в нулевых поднялся на торговле пиратскими дисками. Нам система предложит тоже торговать ими? Но сейчас уже другое окружение: диски стали не актуальны. Тут вопрос в том, есть ли универсальные средства, в которые легко можно интегрировать окружение? С самим окружением, кстати, тоже вопрос: слишком уж оно разнообразное и не предсказуемое.

Не прописывал точно. Это было точно то ли до, то ли сильно позже спектра. Я реально больше на интелевые видеодрайвера грешу. Просто очень удивительно, что вешают Mozila и KDE софт. Могу спокойно просидеть день в консоли и vscode, но Kate повесит. Причём не обязательно, как повезёт.

На тайловые тоже хотел пересесть, но много вопросов возникало. Во-первых, дилема: i3 или awesome. Во-вторых, слышал, что тайловые не очень на небольших экранах. А у меня так сложилось, что я фанат компактификации и принципа: "ноут в небольшую плечевую сумку". Сейчас тот, который с линуксом 11.6', а на винде вообще 10'.

Честно говоря, не знаю, на чём сейчас Manjaro (как-то поставил и не посмотрел): X или Wayland. Арч точно на X был. Если и Manjaro до сих пор на нём, думаю на Wayland попробовать, может поможет.

Собственно, если интересно, нашёл ту свою тему на archlinux.org.ru:

https://archlinux.org.ru/forum/topic/19811/?page=1

Был арч. Веселье было раз в 2-4 мес, часто с обновлениями. У меня со временем стал заготовлен шаблон того, что надо протыкать, проверить после обновления. Особо весело было, когда что-то из AUR стояло.

Один из весёлых случаев был, когда в ноуте сломался mini PCIex. Докупил USB модуль WiFi от tp-link. Драйверов на него не нашлось даже в репах. С ним для линукса поставлялись драйвера в исходниках. Ну, с плюсами, как говорится, не понаслышке, попробовал сам собрать. Огрёб (как потом оказалось, tp-link их выложила чисто для галочки, и их нужно было ещё дорабатывать). Полез на AUR. Там нашлось. Но по итогу мне приходилось их пересобирать с каждым обновлением ядра, временами реально что-то правя в коде.

Со временем проблема как-то решилась. То ли мейнтейнер появился, и их перетащили в репозиторий, то ли я тогда просто уехал на другой ноут. Уже не помню, что было сначала. Но на новом ноуте тоже не без проблем. С выходом 5-ой версии ядра у меня ноут стал мёртво зависать, преимущественно в Qt интерфейсах и особенно браузере. В журнал писал, что проблемы с видюхой. Сначала оказалось, что Intel тогда в ядро залил что-то ломающее, что ломало Haswell и Broadwell ядра. У меня как раз Broadwell. Год я жил на 4.19-ом ядре из AUR, пока не устарело совсем. Переезд на 5-ое снова вернул проблему, но при этом даже в лог ничего не писалось. На форуме арча помочь не смогли. Со словами: "Слишком слабый". Ну да, может и мобильная платформа в ноуте, но 4 гига оперативы, да и не доисторический. Ну явно аргумент так себе.

Недавно я по необходимости достал тот ноут. Обновил немного, довесив оперативки и вставив SSD. Залил Manjaro, как по сути тот же арч, к которому привык, но ставится быстрее. Ну и что? Проблема мёртвых зависаний похоже всё ещё жива. Не столь часто стало, но сохраняется.

По итогу так скажу: идеальной ОС я не нашёл. В целом, винду и линукс оцениваю как операционки, каждую под свой спектр задач. Вот как плюсовщику мне удобнее для разработки линукс, ибо с рассовыванием и обновлением библиотек и зоопарком подсистем (msvc, mingw, cygwin, иногда borland) на винде задалбываештся, но иногда танцы с линуксом перевешивают эти проблемы.

Ещё одна гипотеза. Возможно инженеры, скажем так, "спокойнее" относились к этим тестам. То есть, не давали им какой-то значимости, не были вовлечены в них. Замечал, что есть люди, которые думают "вширь" но "не глубоко". А есть, которые думают наоборот: "узко", но "глубоко".
Первые - это не редко менеджеры, начальники и, внезапно, те же бухгалтеры (если они конечно не погружаются в анналы экономики). Очень часто способны делать уйму дел одновременно. Но как дело доходит до "вникнуть", сильно проседают.
Вторые - это учёные, инженеры. Часто зарабатывают себе очивки за какие-то гениальные изобретения, решения каких-то сложных проблем. Могут жизнь посвятить решению какой-то проблемы. Но вне своей области (или областей) сильно проседают.
Вот люди из второй категории просто не смогли "вникнуть" в этот тест, ибо он скорее всего был именно "поверхностно, но вширь". Что как раз подошло бухгалтерам.
Кстати, жаль, что не не посмотрели ещё по полу. Есть мысль, что в первую категорию чаще попадают женщины, а во вторую мужчины.

Много операций со строками. Выглядит не особо быстрым. Когда-то делал такое, но на стеке: объединил алгоритм вычисления обратной польской нотации и алгоритм преобразования из строки в обратную польскую нотацию, причём так, чтобы всё это было однопроходным.

А так, что бы ещё добавил,так это функции от нескольких аргументов. Там у вас по сути небольшая доработка будет: указываем у функции, сколько аргументов она хочет, далее из списка забираем их.

У make_shared/make_unique есть ещё одна проблема. Нельзя создать экзепляр некоторого класса A, в области видимости этого класса, если конструктор этого класса находится в protected или private области:

class A
{
public:
  static std::shared_ptr<A> Create()
  {
    return make_shared<A>(); // Ошибка.
  }
  
protected:
  A() = default;
};

Тоже самое со static_pointer_cast и dynamic_pointer_cast.

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

С ним ней не всё так хорошо. У нас например в проекте есть здоровый enum, который представляет ID на какую-либо строку. Этот enum генерируется другим инструментом вместе с локализациями. И тут две проблемы:

  1. ID там достигают значений порядка 10000 (количество реальных значений в enum меньше, остальные берутся другими способами). И вот, перелопатить это невнятное количество в compile time (а именно это и делает эта библиотека) - серьёзное увеличение времени компиляции, а ещё скорее всего по количеству итерации свалится.

  2. Генератор этого enum по ряду причин не может нам дать максимальный ID. Поэтому не понятно, как задавать пределы (библиотека их требует).

Добавлю ещё про оптимизацию сайтов/приложений под размер экрана. Тот случай, когда хуже скролла только корявая адаптация. В этом случае нравится Instagram. Они наверное думают, что у всех лопаты с 4к экранами. Был у меня телефон с узким экраном. Вроде всё честно: 16:9, по идее не должно было быть проблем. В инсте у комментариев есть кнопка ответа. Пока вложенность комментариев одинарная, то норм. Но как только вложенного два и более, то кнопка ответа уезжает под кнопку лайка. И нет, чтобы просто сделать её сердечком для экономии пространства, они её сделали с сердечком и надписью "нравится". Зачем? Не понятно.

Я бы ещё много написал про клавиатуры на Андроид, но это тема чуть ли не отдельной статьи.

Ещё не плохой вариант: msys2. Из минусов только то, что немного отстаёт по версии. Cygwin не использую, но думаю там тоже есть.

На сколько помню, format тащили по образу и подобию libfmt. Но что действительно жаль, так это то, что затащили его не весь. fmt::join например очень полезная фишка.

А как быть тогда, если циклическая зависимость всё же нужна? Получается на уровне модулей она не реализуема теперь вообще никак? То есть, если в показанном вами примере я мог вынести реализацию в cpp, и это работало, то теперь не понятно.

И ещё, если циклическая зависимость в пределах модуля, и решил разнести его части (те же классы) по implementation unit, то тоже не ясно, как рулить циклическими зависимостями.

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

Что-то мне кажется, что нужна ещё одна статья :)

Честно говоря, я вообще не понял профита от этого Плюса. Комфорт такси не сильно отличается от обычного, а ждать дольше. При этом цена всё равно выше, хоть и с Плюсом. КиноПоиск — по Плюсу всё то, что не интересно (видимо то, что никому продать не получилось). Может музыка решала бы, но я привык по старинке в виде mp3. Так в общем несколько месяцев пользовался, а потом отписался.
А после одного инцидента так и вообще боюсь оставлять им свои платёжные данные.
Ну, а в маркете я единственный профит нашёл: берут баллами от СберСпасибо.

Information

Rating
4,326-th
Location
Калининград (Кенигсберг), Калининградская обл., Россия
Date of birth
Registered
Activity