Обновить
13
Александр Коновалов@neit_kas

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

Отправить сообщение

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

С ним ней не всё так хорошо. У нас например в проекте есть здоровый 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. Так в общем несколько месяцев пользовался, а потом отписался.
А после одного инцидента так и вообще боюсь оставлять им свои платёжные данные.
Ну, а в маркете я единственный профит нашёл: берут баллами от СберСпасибо.
Вообще, там два значения найти можно.
Первое: (кто?) голубые, (что они делали?) ели, (что ели?) чипсы, (где ели?) в парке.
Второе: (что делали?) ели, (где ели?) в парке, (что ели?) чипсы, (какие чипсы?) голубые (например, подразумевая цвет пачки)
Мне теперь даже интересно, какое имелось в виду?
Слушайте, а сканеры по контрасту разбирают его? Просто ради интереса навёл на вторую картинку из поста. И сканер её таки разобрал
AUR выглядит как конфетка. Но конфетка коварная. Выглядит всё это как-то так: «Вау! Что-то интересное. Дай установлю. О, это тоже интересно, забираю.» Спустя десяток таких пакетов из AUR: «А чего это шрифт на рабочем столе поехал? А чего при обнове ломаются зависимости? Чего это интернет начал отваливаться?»
если разработчики ядра запретят это модификацией лицензии

На сколько помню, не смогут. По GPL v2 они считай сами себе сделали неприятный лицензионный конфуз. На сколько помню, для правки лицензии нужно согласие всех тех, кто участвовал в разработке. Попробуй их всех сейчас найди. Кстати, поэтому не могут и на GPL v3 перейти.
А, вы в плане вставки кастомных компонентов. Это да. Сам сейчас копаю сей вопрос. Теоретически можно (всякие Flash в своё время так и встраивались со стороны браузера), но явно не просто
Я как-то задумывался над реализацией UI на WebKit. Кастомный html тег не нужен. Идея была в следующем:
На html+css+js делаем типичный веб UI (не исключено и использование популярных в js фреймворков). Далее делаем интерфейс C++ -> js. В QtWebKit это выглядело как C++ класс на одной стороне и аналогичный js объект на другой. Ну так вот, через этот интерфейс все данные и таскаем.
Система parent-child используется во многих UI (я даже не припомню таких, которые её не используют). Она логически напрашивается. Есть в окне панелька, в которой лежат кнопочки. Логично выходит, что панелька дочерняя к окну, а кнопки дочерние к панельки. Бывает, что на этой системе и отрисовку в рендере строят: рисуют от родителя к детям (как в Qt — не знаю). Причём она гарантирует, что кнопочка не отрисуется под панелькой, на которой лежит, а также что не придётся иметь геморрой с Z-порядком (по крайней мере в рамках родителей и детей). Убийство от родителя к детям тоже считаю полезной особенностью: при уничтожении окна не требуется обхода всех детей. Кроме того, QPointer всегда позволит знать, кто убит, а кто нет (если требуется).
Поделюсь и я своим впечатлением о VS Code. У меня таки прижился, но не совсем. С ним я познакомился, когда перебирался с Windows на Linux. Сам я по большей части использую C++, поэтому встал конечно же логичный вопрос: IDE, UI тулкиты, фреймворки, компиляторы и как со всем этим работать. На Windows хватало Embarcadero для своих нужд (ещё тогда в универе был, поэтому рабочими нуждами не пахло). Поэтому при переходе конечно же не приятно удивился необходимостью настраивать всё ручками. Перепробовав некоторые из свободных, таки остановился на VS Code.
Со временем конечно в рамках C++ мне его стало не хватать и пересел на QtCreator. Но получилось так, что периодически приходилось использовать другие языки (не обязательно программирования): CSS, HTML, Python, посматривал в сторону D и Java. Поэтому как недоIDE для всего того, что не используешь постоянно он мне понравился. Поэтому как-то так:
Плюсы:
  • Большое количество поддерживаемых языков, которые легко добавить и убрать (если вдруг оказались не нужны)
  • Субъективно, но для меня оказался наиболее удобным и гибким в Linux из бесплатных.
  • Кастомизация. У того же QtCreator'а она тоже есть, но требует пересборку плагинов при обновлении, а также эти сами плагины могут вести себя крайне не стабильно и даже ломать конфиги. Поэтому там решил оставаться только в рамках стандартных. Для VS Code всё подумывал что-нибудь и самому написать, но руки не доходят
  • Не очень требовательный, если не засирать плагинами.


Но и минусов нашлось:
  • Как уже писали, языки бывают слабо поддерживаются. С этим я в C++ столкнулся. Ну, о таких вещах, как создание реализации или подключение нужного инклюда я вообще молчу. Но даже с разбором исходников не всё гладко. Одно время на этом очень сильно тупил, время от времени зависая на минуту-другую. Последнее время ситуация конечно лучше стала.
  • Хотелось бы конечно более гибкой работы с плагинами. Их там можно включать и выключать на лету, многие даже без перезапуска. Было бы здорово привязать это к какой-нибудь системе шаблонов. То есть включать и выключать группы плагинов при активации какого-то шаблона. Одно время в нём почти одновременно работал с HTML/CSS/JS/PHP, C++, тыкал D и помогал людям из универа с Delphi. Для каждого проекта уходило несколько мин на активацию плагинов и выключение других. Для рабочей области настройки сохранялись, но жутко бесило.
  • Как уже отмечали, жутковатая настройка у него. Много манипуляций нужно совершать.
  • Время от времени видимо любят что-то очень сильно поменять. Однажды появились таски. Я прочитал доки по ним, поставил плагин, который их отображает на панели как кнопки. Стало мне удобно и хорошо. Но однажды после обновления я выясняю, что они старую систему заменили на новую. С ней уже не стал разбираться.
  • Может плохо искал, но ничего не нашёл для создания файлов (или даже групп файлов) по шаблону.
Если ещё актуально и нужен UI Designer, их имеют следующие библиотеки/фреймворки:
  • Qt (Qt Designer или в целом IDE Qt Creator)
  • Gtk (Glade или IDE Anjuta)
  • wxWidgets (У них несколько собиралок, например wxformbuilder, а также собиралка в составе IDE Code::Blocks)
  • FLTK (Fluid: позволяет ещё код и UI блоками собирать)
  • JUCE (имеет где-то в комплекте странного вида IDE с собиралкой UI)
Если мне вдруг станет не хватать возможностей Mercurial, я переведу такой проект на Git и буду с ним разбираться. Но зачем разбираться в этих дебрях, если этого не требуется. Mercurial кстати мне ни разу настраивать и не приходилось (только ssh ключ и всё), а вот с Git на прошлой работе не меньше месяца ежедневная война была.
Каждый проект под свои задачи. Сейчас на работе например SVN. Проанализировали возможность переезда на Git, оказалось не удобно и не целесообразно. Вот так тоже бывает.
Под Windows есть один хороший: TortoiseGit, но я обиталец линукса. Под него такой зоопарк этих клиентов, что выбор конкретного ни разу не легче настройки консольной работы)

Информация

В рейтинге
Не участвует
Откуда
Калининград (Кенигсберг), Калининградская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Разработчик игр
Старший
C++
Git
Python
Windows API
Linux
Проектирование архитектуры приложений
Паттерны проектирования