LINUX.ORG.RU

Сообщения seiken

 

Почему боятся ООП?

Форум — Talks

Заметил, что некоторые разрабы стесняются (триггерятся/истерят/брезгуют/отстраняются/впадают_в_кому от) ООП. Почему? Вот, один говорит «у нас тут не наследование, а …», так и хочется добавить «розовые пони». Т.е. если ты можешь реализовывать интерфейсы, у тебя уже нет отношения is-a? Может быть, какие-то древние ЯП не поддерживали чисто виртуальные интерфейсы, и нужен был непременно базовый класс, но как минимум уже C++ сломал эту традицию.

 

seiken
()

Поддержка уже созданного

Форум — Talks

Допустим, вы выполнили текущий проект, и вам предлагается поддерживать уже разработанный другой проект. Над ним работали две команды, сменяя друг друга, и они уже ушли. Но всё равно находятся баги которые заказчик хочет пофиксить, а также у него появляются новые требования. Код на плюсах, не так чтобы говнокод, но местами какая-то шиза (см. мою тему про CPS). Юнит-тесты отсутствуют как класс, чтобы полноценно протестировать, нужно организовывать с заказчиком очные сессии с его оборудованием. ТЗ написано чётко, но то тут, то там всякие изменения, которые хорошо, если где-то записаны. Существует человек, который эти требования согласовывал и в курсе всех архитектурных решений, но он без понятия, как это реализовано. Плюсы образца 11 года, но вся платформа гораздо старее, и если захочется использовать std::string, надо его создавать из кастомного класса строк, потому что IPC между потоками использует вот эту платформу, в которой не используются исключения, нет STL и проч.

Как вы поступите? Я даже предлагаю варианты ответов:

  1. какая разница, создавать новые системы или править старые - цель одна, решить задачу заказчика, получить рабочий продукт;

  2. если не хочешь иметь дело с программированием, иди в манагеры;

  3. я так люблю плюсы, что готов копаться в любом коде;

  4. задачу выполню, но больше в Легаси ни ногой;

  5. да пошли вы нафиг! Увольняюсь и открываю стартап, где будет только новодел с Растом, гошечкой и node.js.

 

seiken
()

Рабстанция на серверном ARM не айс

Форум — Talks

Кто там хотел, чтобы ARM убил Intel во всех сегментах?

Немчура тестирует рабстанцию на серверном 96ядерном ARM.

https://www.heise.de/tests/Linux-Workstation-mit-96-Kern-ARM-Prozessor-im-Test-9828718.html?seite=all

Там какой-то навороченный конфиг за 8000евро, с 256Гб оперативки, нвидией и проч. И SSD наверняка не из тормозных. У меня нет подписки, но они сразу написали, что предустановленная убунта 22.04 до экрана логина грузится 2 минуты, что как-то не впечатляет…

 ampere

seiken
()

IDE и docker

Форум — Development

Как вы работаете с кодом в IDE, если все опенсорс зависимости, необходимые для сборки, лежат в докере? Т.е. например, идёт "include «такая/зависимость.h», и ни файл не найден, ни объявления внутри.

 подножка

seiken
()

Если Intel протух, брать AMD?

Форум — Talks

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

Тем не менее, есть потребность покупать ноут, и возникает вопрос, что брать.

Пока вижу два варианта:

  1. на Интеле 12го поколения;
  2. на современном АМД.

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

Как думаете, что брать сейчас?

 

seiken
()

Хакеры заработали на AT&T

Форум — Talks

Украли личные данные сотни млн клиентов, включая звонки и смс за погода в 2022г. Потребовали млн талеров, телеком гигант согласился на 370к, кои и выплатил в биткоинах, за видео доказательство уничтожения украденных данных.

https://www.wired.com/story/atandt-paid-hacker-300000-to-delete-stolen-call-records/

Пришли к успеху пацаны?

p.s. Линукс тут при том, что ЮНИКС зародился под крылом АТ&Т.

 нахлобучили

seiken
()

Что за проблемы на ровном месте?

Форум — Development

Открываю для себя дивный новый мир Джавы, и вот наткнулся на камень на ровном месте! Убунта 22.04, всё как положено, LTS, openjdk-21, никаких там васянских сборок. Хочу собрать «здравствуй мир!» на Джаве, но как у взрослых людей (не через ручное «javac …», а инструментами).

$ gradle init --type java-application

FAILURE: Build failed with an exception.

* What went wrong:
Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().
> Could not create service of type PluginResolutionStrategyInternal using BuildScopeServices.createPluginResolutionStrategy().

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

Вот это что такое вообще? Почему с С++ никогда не было вот таких проблем на ровном месте - тупо начать проект с нуля. Максимум, что когда-то приходилось делать - собирать cmake, т.к. хотел использовать относительно новую функцию. Но здесь я даже ничего ещё не начал делать, а оно уже не хочет работать. Gradle из коробки, ничего кастомного.

 ,

seiken
()

шифрованный git

Форум — Development

Допустим, я не доверяю хостеру git сервера. Можно ли как-то относительно просто добавить на клиентской стороне шифрование/дешифрование блобов. Я так понимаю, что через существующие хуки это сделать нельзя, т.к. само содержимое коммита (не commit message) модифицировать нельзя.

 

seiken
()

Если прога падает, кому фиксить

Форум — Talks

Допустим, ваша контора работает с другой конторой, поставщиком некой железки. И есть некая утилита, которая с железкой коммуницирует. Но утилита предоставляется производителем железки только под виндоус, и они также предоставляют исходники.

И вот, ваш коллега пересобрал исходники для Linux и ARM64, и эта версия проги падает с сегфолтом.

Кто по-вашему должен дебажить и исправлять падение: ваш коллега или разработчик железки?

 сишка

seiken
()

До 70% ускорения в метеоритном озере

Форум — Talks

Шрини из Интела опубликовал патч, ускоряющий работу процессоров Meteor Lake:

https://www.phoronix.com/review/intel-meteorlake-epp-perf

Налетай, накатывай, пользуй!

P.S. а ещё ругают индусов за их программирование…

 

seiken
()

ИИ не опасен

Форум — Talks

Для тех, кто боится за своё рабочее место. Вот, например, когда появились IDE, разве сократилось количество программистов? А IDE, заточенные на конкретный язык, до сих пор в мелочах полезнее всяких нейросеток.

Вот, сегодня бился с проблемой «undefined reference» в тесте. Суть проблемы понятна, а что именно импортировать в тесте - совершенно не ясно. Спрашиваем у ГПТ о проблеме - он тупо повторяет всё то, что у меня уже есть, типа, вот такой исходник, вот такой конфиг грэдл, ничего нового. А IDE просто добавляет нужный импорт грубо говоря, по щелчку «решить проблему».

 

seiken
()

Строчная подстановка в Питоне

Форум — Talks

А вы знали, что в Питоне, начиная с 3.6 вместо:

'1 + 3 = {}'.format(1+3)

можно писать:

f'1 + 3 = {1 + 3}'

Я только что узнал об этом от друга, который проходит курс о Питоне. Вот она, моща Питона во всей красе! Разве можно такую фичу представить в C++? Ну не реально же!

 моща

seiken
()

Энергоэффективность новых Интел и Линукс

Форум — Talks

Присматриваюсь к современным лэптопам, потому что текущий начинает подыхать.

Продают некие Intel core ultra с 14 ядрами. Из них 2 ядра «Low power efficient». Линукс умеет их нормально использовать или там чисто аппаратная логика?

 

seiken
()

Перенабор в корпах

Форум — Talks

ИТ гиганты типа Гугла и ФБ нанимают больше людей, чем реально нужно для бизнеса, просто чтобы они не ушли к конкуренту. Но приступив к работе, внезапно оказывается, что работать им не над чем, и они просто участвуют в бесконечных митингах. В результате их потом просто сокращают. «Если ты хочешь работать 4 дня в неделю, не вылезая из пижамы - иди в Фейсбук».

https://www.businessinsider.com/silicon-valley-debates-tech-employees-doing-fake-work-2023-3

 ненужные люди

seiken
()

Поднимать ноут за один угол

Форум — Talks

Часто вижу такое, как ноуты поднимают/переносят за один угол. Но ведь корпус не предназначен для такой нагрузки. Я так как-то делал с одной леновой, ну и она стала зависать при поднятии за один угол. В том смысле, что ноут надо за два противоположных края поднимать, чтобы больших моментов не было.

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

 головотяпство

seiken
()

SignalStrength сотовой сети на Андроиде

Форум — Development

Решил тут ради эксперимента написать простейший апп для Андроида, но за незнанием API всего этого безобразия, параллельно решил протестить, что мне подскажет chatGPT.

Идея аппа такая: Всего одна кнопка, при нажатии на неё каждую минуту апп проверяет, доступна ли сотовая сеть (ну, скажем, сигнал больше N дБ), а если кнопку опять нажать, проверять перестанет, и выведет относительное время доступности сети за измеряемый промежуток времени.

chatGPT создал прекрасный костяк приложения, который после дополнительных распросов даже собрался без ошибок, но… при изменении уровня сигнала никаких апдейтов не происходит. Т.е. коллбэк, который листнер должен вызывать, вызывается только один раз, в значении всегда 99 попугаев, и больше коллбэк не вызывается, как ни носись со смартфоном по разным углам квартиры.

Но уровень сигнала таки изменяется, что видно и по количеству «палок», и в стороннем аппе.

Привожу далее ключевой момент (листнер и коллбэк, и как они привязаны к MainActivity).

Сперва листнер:

class SignalStrengthListener(private val context: Context, private val textView : TextView) : PhoneStateListener() {
    var signalStrengthdBm : Int = 0

    override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {
        Log.d("SignalStrength", "onSignalStrengthsChanged")
        super.onSignalStrengthsChanged(signalStrength)
        // Get TelephonyManager
        val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager

        // Check if the network type is cellular
        if (telephonyManager.phoneType == TelephonyManager.PHONE_TYPE_GSM ||
            telephonyManager.phoneType == TelephonyManager.PHONE_TYPE_CDMA) {

            // Get signal strength in dBm (decibels)
            signalStrengthdBm = if (telephonyManager.phoneType == TelephonyManager.PHONE_TYPE_GSM) {
                signalStrength.gsmSignalStrength
            } else {
                // For CDMA networks
                signalStrength.cdmaDbm
            }
            textView.text = String.format("Strength(dB): %-10d", signalStrengthdBm)

            // Check if the signal strength is significant for cellular communication
            if (isSignalStrengthSignificant(signalStrengthdBm)) {
                Log.d("SignalStrength", "Signal strength is significant: $signalStrengthdBm dBm")
                // Perform actions based on significant signal strength
            } else {
                Log.d("SignalStrength", "Signal strength is not significant: $signalStrengthdBm dBm")
                // Perform actions based on non-significant signal strength
            }
        }
    }

    private fun isSignalStrengthSignificant(signalStrengthdBm: Int): Boolean {
        // You can define your own criteria for determining if the signal strength is significant.
        // For example, you might consider a threshold value for the signal strength.
        return signalStrengthdBm >= -100 // Example threshold: -100 dBm
    }
}

Кусок кода, активирующий листнер:

        val telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
        val signalStrengthListener = SignalStrengthListener(this, auxTextView)
        telephonyManager.listen(signalStrengthListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS)

О том, что onSignalStrengthsChanged вызывается только один раз и только в самом начале после старта аппа, я знаю из содержимого Logcat, в котором только одна соотв. запись.

Пара неоднозначных моментов:

  1. собирается для API level 31, тестировал как на эмуляторе с таким же API level, так и на реальном xiaomi с Андроид 13;

  2. Android Studio сигналит, что PhoneStateListener deprecated. Но в какой версии оно депрекейтед и что использовать вместо него - не понятно.

Есть какие идеи?

Перемещено Zhbert из mobile

 , phonestatelistener

seiken
()

Потыкал Альт РС 10.2 с Мейтом

Форум — Talks

Захотелось мне тут от нечего делать попробовать российский дистр. Астру продают, поэтому остановился на AltLinux Рабочая Станция 10.2 с Мейтом.

Ставил, очевидно, в виртуалочке. Загрузочное меню ораньжево-коричневое, на русском. Что на русском - хорошо, а вот цвета так себе, потому что не всегда контрастно (проценты на фоне заполненного прогресс-бара…). Это же блин базовый принцип эргономичности: чтобы было контрастно. Минус.

Выберите язык. Язык чего? Раскладки? GUI? Клавиатура у меня немецкая. Ну да впрочем хрен с ней, английского хватит вместо немецкого. Можно создать шифрованный раздел, если выбрать ручную разбивку. Можно убрать некоторые опциональные пакеты из категорий пакетов (Офис/Мультимедиа/….) при установке. Это хорошо. В процессе установки можно узнать, что альт включен в какой-то «Единый реестр ПО и БД» или что-то такое.

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

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

Смотрим после установки. Зачем-то прашивает пароль пользователя два раза, хотя при установке выбрал «Автоматический вход». Первый раз - понятно, это dm-crypt, а второй раз (на фоне прогресс бара) зачем? Русифицировано не всё. Например, «Grub Customizer» в настройках.

В целом Mate я не особо тыкал, но создаёт приятное впечатление старого доброго быстрого и аккуратного GNOME. Шрифты качественные из коробки - это до сих пор актуальный пункт в 2024г. Плюс.

Минусы. sudo нет из коробки, такое ощущение, что попал в debian или даже *bsd. Вместо apt-file apf. Пробуем iotop, открывается привычная простыня, но что это:

CONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO % и в соотв. колонке для всех процессов стоит «unavailable».

Грепаем текущий конфиг ядра, а там всё в порядке, CONFIG_TASK_DELAY_ACCT=y.

Дальше я не стал копать, потому что суббота не резиновая.

Резюме: идея вроде неплохая, но кругом недоработки, которых в других дистрах нет.

 

seiken
()

ChatGPT и лицензирование

Форум — Talks

Сейчас много шума вокруг GPT. И вот я подумал, а под какой лицензией GPT отправляет код его пользователям. И вот, что пишут:

The OpenAI API can be used for commercial purposes. However, when it comes to using the code generated by AI, it’s important to check whether AI-generated code can be copyrighted in your country. In the United States and the European Union, it’s not legal to copyright any kind of AI-generated content. To address copyright issues, you would need to modify the code generated by ChatGPT in a significant and meaningful way before copyrighting it under the license of your choice. Otherwise, the code is considered to be in the public domain. So yes, you can use it for commercial purposes regardless of the country you are in. However, whether you need to make significant modifications to the code to protect it with a copyright will depend on the copyright laws of your country.

Короче, прежде чем код можно легально использовать, его необходимо конкретно так перелопатить. Иначе он является достоянием общественности.

Так что если кто-то думал, что просто взял и скопировал гениальных код и получил профит - не так всё просто.

 

seiken
()

Встраивальщина или веб-сервис?

Форум — Talks

Чтобы вы выбрали из этих двух вариантов:

  1. лид в проекте встроенного ПО, с минимальным вовлечением в проектирование, разработку, но с серьезными техническими навыками, чтобы понять, где какие проблемы и как их решать (кого позвать/назначить их решать, кого с кем связать) или

  2. принципал инженер ПО на задаче разработки очень ответственного корпоративного веб-сервиса? «Очень ответственного» не значит, что в п.1) какая-то никчемная поделка с низкой ценой ошибки, просто веб-сервис - не на от*еись, от которого многие команды как внутри конторы, так и со стороны заказчиков будут зависеть.

З/п, допустим, одинаковая. Но если кого-то рвёт от веб-сервисов, можно взять доп. вводную, что там будут платить больше. Принудиловки с технологиями (кровь из носа Java) в п.2) нет.

Можете задавать вопросы, если нужно больше инфы для принятия решения. Желательно также указать, почему.

Перемещено leave из job

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

seiken
()

Гугл: переходим постепенно на безопасные ЯП

Форум — Talks

Сегодня читал со смартфона новый (начало марта 2024г.) технический отчёт от гугловцев, в котором они объявляют о постепенном переходе на ЯП с memory safety. Сейчас не могу найти ссылку, но вот, что по сути.

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

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

Приводится какая-то статистика, что типа в Андроиде 70% критических уязвимостей - ошибки в работе с памятью. Но тогда возникает логичный вопрос, ведь кроме ядра в Андрюше очень мало плюсового кода, это какие-то нижние части HAL или что там у них, всякая околосистемная мишпуха, может быть кодеки какие анально огороженные, а всё что выше и остальное уже давным давно на память-безопасных мега языках. И что тогда переводить на эти безопасные языки, если всё, что можно уже и так переведено…

Предлагают типа тюнить плюсы до безопасного подмножества и использования только его. Но тогда нафига нужно будет с этого безопасного подмножества переписывать на Rust? Опять непонятка.

Упоминаются языки на VM, а также Rust, Carbon (экспериментальны проект, типа безопасный C++), Go (блин, он-то тут при чём, если это ниша веб-сервисов? Кто-то пишет вебсервисы на сишке, что это прямо такая глобальная проблема?). Ни слова о Аде. Видимо, упоминаются только те ЯП, в которые Гугл вложился и теперь пиарит.

 

seiken
()

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