Внезапно не созвучие
книжка - Think Python, обзор на хабре
книжка - Think Python, обзор на хабре
Бизнес-логика отрабатывала в целом правильно, но вот, как в истории выше, "что-то где-то ломалось". На тот момент я работал, наверное, ещё меньше полугода и в целом с кодовой базой проектов был, мягко говоря, не знаком, поэтому вооружившись правилом "глаза боятся, а руки делают" отправился в путешествие, как мне казалось тогда, в один конец.
Ни трейс, ни лог не выдали никаких симптомов. Отладка в модулях, где в основном сосредоточена бизнес-логика, показала, что всё работает добросовестно. А модули, которые работают со входными данными, тоже не признались, что у них есть баги. Где-то пять часов отладки спустя, я начал что-то подозревать. Я уже очень долго не мог найти объяснение происходящему. В мыслях, эмоционально, я возвращался в моменты, когда я только начинал программировать, и очень часто попадал, как мне казалось, в тупик. И это ощущение меня убеждало в том, что ошибка должна быть самой идиотской, которую только можно придумать. Ситуацию не проясняла даже отладка по шагам. Я уже говорил тебе, что такое безумие? Безумие — это точное повторение одного и того же действия раз за разом в надежде на изменение. Это. Есть. Безумие. Похрен! Я начал разговаривать сам с собой, и вдумчиво читал код, прослеживал модификацию данных, объяснял себе, что делает сейчас код функции, на которую я смотрю. Буквально, читал каждую строчку и интерпретировал ее, а потом в дебаггере сверял, что я все правильно интерпретировал.
И вот, зашел я в который раз в функцию, в самый грязный модуль, который занимался стягиванием данных из базы в бомбическую иерархию классов, которая, считай, в ядре бизнес-логики как ложка гуано мамонта в бочке с вискарем. Я вернулся в одну из функций, которую я всегда пытался как можно быстрее в проскочить в дебаггере, потому что глаза начинали кровоточить от нагромождения if else и кошмарного кода с нарушением всех возможных принципов программирования, и наверное, парочки международных конвенций. Но я понимал, что в этот раз все нужно делать без исключений и придется строчка за строчкой объяснить, что в этой функции происходит. Где-то на половине функции, на строке с номером где-то около 1700, я начинаю чувствовать, что что-то не так. То ли я обговорился, то ли потерял мысль. Как я могу потерять мысль, если я просто интерпертирую то, что уже написано? Присмотревшись к коду, зашёл на точку останова повыше, и оказалось, не показалось. Увидел я очень интересную, мать вашу, локальную переменную. Локальную переменную, #!&@, с именем, которое идентично имени поля класса, за исключением префикса к полям "m_"! По факту, логика обработки была правильной, но вот для одного случая, была маленькая, такая, ошибочка. Для одного действия, вместо чтения поля класса, нужно было читать эту локальную переменную-самозванца. То есть другими словами, для фикса нужно было "всего лишь" удалить две буквы! Как удачно получилось, что код настолько старый, что пережил ни одну миграцию на новую систему версионирования и просто так теперь не узнать, что за гений это сделал!
Очень забавно было смотреть ревью в конце дня — кто-то выкатил фичу, кто-то сделал правки для случаев использования в нескольких модулях, а на джуна посмотрите - за целый день всего лишь две буквы удалил!
После этого случая, я начал немного по другому смотреть на профессию разработчика в принципе.
P.S.: технического долга много, и его разрешают ликвидировать, только если это блокирует выполнение какой-то бизнес задачи. Например, к этой либе подпустили человека только через год, когда начали работы в рамках задачи по увеличению быстродействия.
Предисловие:
Все на свой страх и риск!
Многие смартфоны (Xiaomi например) делают цену смартфона низкой за счет встроенной рекламы( договариваются на этапе выхода, обновления прошивки с компаниями на предустановку приложений, всяких демо игр и прочих нужных приложений). Да, некоторые можно к примеру отключить но не удалить во вкладке все приложения, но вот допустим мне мешало приложений 20-30 заводских на аппаратах что на xiaomi что samsung. Даже тот же самый без рекламы Youtube Vanced ставишь, родной значок Youtube остаётся, а некоторые приложения еще и авто обновления без вашего ведома скачивают, и на обновлениях этих приложениях нет ограничения в правах доступа) что отнимает память устройства, трафик, + их работа в фоне (даже периодическая). Чтобы пользователь не носил телефоны в магазины с возвратом по причины неработы и наименьшего распространения вирусов, операционная система Android (если сравнивать с Windows) не дает права на изменение системных файлов - называется "не дает root доступ". Это как бы и плюс к безопасности, и в тоже время и минус по к примеру этой причине. Если установить root права - приложения сбербанк, и подобное откажутся работать на телефоне. Можно конечно замучаться их прятать всякими Magisk модулями, не обновлять телефон не получая новых функций и устранения ошибок старых версий андроид, ведь защита от root прав улучшается с каждым обновлением версий безопасности Android. А без рут прав как известно с самого телефона удалить ненужное ПО не получится, но есть одна хитрость - называется она ADB - это режим отладки ПО телефона с компьютера - очень простая штука безо всяких root прав).Лучшее в этом то, что если удалили что то лишнее( по глупости, неопытности) - сброс настроек в телефоне восстанавливает с заложенного в нем производителем образа абсолютно все приложения( в телефоне есть резервный образ занимающий метров 700 со всем этим ПО+-) Чтобы начать необходимо дать компьютеру разрешение на отладку по USB.
Начало:
Хоть на Xiaomi, хоть на Samsung-е примерно все одинаково:
Xiaomi - Настройки - Устройство - Все характеристики - тыкаем в Версия MIUI 7 раз.
Samsung - Настройки - Об устройстве - Номер сборки
HTC - Настройки - О программе - Информация о программном обеспечении - Дополнительно - Номер сборки
VIVO - Настройки - О телефоне - Версия ПО
Изображение чужое( впадлу простые вещи делать))
Короче говоря, плюс-минус аналогично у всех производителей.
После успешных нажатий появится всплывающая надпись, сигнализирующая об открытии дополнительных настроек. Для того чтобы найти эти настройки, необходимо перейти по следующему пути: «Настройки» — «Расширенные настройки» — «Для разработчиков»
(ну или по моделям примерно так).
Тоже с гугла картинка.
Зашли в расширенные настройки, Включаем:
1: Отладка по USB,
2: Установка приложений через USB.
3.Даем разрешение своему компьютеру на отладку по Usb
Чтобы компьютерное приложение увидело список ваших приложений в телефоне, оно предложит вам установить через ADB на телефон приложение умеющее работать с программой. Если ему не доверяете - можно не ставить, прописывайте название пакета вручную.
Если вы разрешили установить приложения - у вас появится примерно такое окошко, выставляем галочки на все что нужно в листе, снизу справа - что с выбранным делать.
Если не знаете и не хотите сбрасывать потом на заводские - поосторожней выставляйте галки на удаление!Можно попробывать отключить приложение(снизу справа выбирается) но тоже на свой страх и риск!!
Лучше погуглите что можно и не можно удалять именно на вашей версии прошивки и модели.Кстати тут же можно всякую рекламу поудалять)
И: если программа является системной, удалить то вы её сможете, но это может нарушить работу, и даже привести к обязательной перепрошивке(сбросу на заводские параметры если доберетесь)!
В этой программе есть пункт (загрузить пресет) - заготовленные списки по моделям удаления файлов( ну допустим каждый пикабушник под свою модель может выложить под постом заготовку пресета под конкректный телефон либо линейку телефонов, и не надо будет клацать по галочкам а сказать лишь "Спасибо" написавшему под комментарием)
Так же есть в приложении есть командная строка, например для:
Вы скачали приложения PowerAmp эквалайзер с Play Google ( глобальный эквалайзер (улучшайзер звука) для андроида), чтобы эквалайзер видел аудио-потоки всех проигрывателей ему нужно такое разрешение, открываем в программе на компьютере 3-тюю вкладку, пишем то что просит программа в разделе: настройки, эквалайзер, определение всех плееров:
adb shell pm grant com.maxmpz.equalizer android.permission.DUMP
И напоследок, всем кому интересно что за обои на столе -
https://adbappcontrol.com/ru/ -оф сайт данной проги
Инструкция по восстановлению удаленных приложений на оф прошивке
Если вы ненароком удалили нужный пакет но помните, либо могете найти его название гу"глом, например пакет защиты Xiaomi com.xiaomi.finddevice висит все время в шторке найти устройство, но вы незахотели настраивать эту защиту и оно мешает своим присутствием "настройте", вы удалили и каждую минуту он вам пишет: find device has been destroyed в середине экрана -
Копипаст команду в третюю вкладку программы : "adb shell cmd package install-existing com.xiaomi.finddevice" (вместо com.xiaomi.finddevice подставляете название своего пакета), он устанавливает его из резервной копии телефона)
И приложение это установилось, и больше не вылазиет) проверено Лично)
Результат: после удаления всяких магазинов xiaomi,лишних браузеров, заготовленных программ, игр - не узнал телефон)- включается быстро, батарея по сравнению со стоком держится на 20-30% дольше) Работа ускорена, есть возможность удалить экран новостей на экране блокировки, вообщем - Смысл в этом есть однозначно!
Случайно обнаружил возможность создания файлов дебага системы на момент снимка.
Для его создания надо иметь включенный режим разработчика, и в любом активити несколько раз нажать одновременно клавиши громкости вверх и вниз.
Эта штука точно работает на Redmi Note 7.
В случае успеха вылезет это уведомление
После согласия появится пуш
И на выходе появится архив, к каталогу которого можно перейти по пушу
Нигде в интернете не видел такого способа.
Возможно, он недокументированный.
Прошу прощения, если баян.
Коммент для минуса внутри.
При открытии файла выдает ошибку mf_media_engine_err_src_not_supported : hresult - 0xc00d001a
Люди добрые, может знает кто как пофиксить проблему?
/btrs_found;
/startcharging;
/SST_check;
/
***
ERROR 43
Sensibility is not available. Please, contact your customer.
°°°°°°°°°°°°°°°°°°°°°°°°°°°
***
ERROR 639
Insight driver is not found.
°°°°°°°°°°°°°°°°°°°°°°°°°°°
***
ERROR 978
The process of identification was ruined.
°°°°°°°°°°°°°°°°°°°°°°°°°°°
Positioning in process...
/CtPsn_ 5322616N10541136E
/Switch_LNG(Ru)
- Протокол за номером 8233 приведен в действие. Производится анализ и отладка системного обеспечения. Пожалуйста ожидайте. В течение минуты будет произведен запуск андроида:
I N V I S I B L E 1 0 7
Пожалуйста, соблюдайте положенную дистанцию.
/start_all_systems:
/rcv_vsn;
/rcv_hrg;
/rstr_sensitivity
- Ну, что я тебе говорила? Просто ржавый кусок металлолома. Как ты его вообще в этом хламе разглядела?
- Да подожди ты, Оля. Дай мне секунду. Я еще диагностику не провела, сейчас закончу и посмотрим.
- Я и без диагностики вижу что это пустая трата времени. Натаааш, пойдем. Холодно же.
- Никуда мы не пойдем пока я не закончу. Это же невидимка! Часто теперь ты их видишь?
- Это же невидимка, сама сказала.
- И что?
- Как я могу их видеть?
- Ой юмористка. Ты лучше бы по сторонам смотрела пока я работаю.
- Снег вон какой валит. Чего я тебе там увижу?
- Сомнамбулам про снег рассказывать будешь, а пока стой и...
- ДИАГНОСТИКА ЗАВЕРШЕНА. АНДРОИД INVISIBLE ПЕРЕДАЕТСЯ ПОД УПРАВЛЕНИЕ NATASHKATHECAT.
- Ну что, ненаглядная моя железяка. Пойдем домой, искать на тебя запчасти?
- Наташ, а разговаривать он умеет? Хотя бы на иностранном что ли?
- Незачем. У невидимок динамик не предусмотрен. Но если хочешь, могу с ним покопаться, поставлю стоковый разговорник.
- Да не, я просто так спросила. Проехали.
- Ну тогда пойдем.
/start_envanalysis:
/T_12002000
/V_56
/t_???
/w_???
- Наташ, а чего он башкой вертит? Она у него не отвалится?
- Анализирует. Эта модель все время проводит анализ. ВВТВ по моему - время, видимость, температура и ветер. Но у этого с датчиками проблема, пришлось контакты закольцевать чтобы запустился. Да, железный мужик? Вместо ветра и температуры сплошные вопросики?
- А как он нас предупредить если увидит сомнамбулу?
- Никак. Попытается убежать, если мимикрия не сработает, а она на девяносто процентов и не сработает у него сейчас.
- Трусливая консерва.
- Программа такая. Тихо! Слышала?
- Что слышала?
- Давайте ка сойдем с тропинки от греха подальше. Не люблю я этот снег, блин.
- Наташ, ну не будь параноиком. Не будут они здесь шарахаться.
- Пошли. В обход надежнее будет. За универмагом свернем и доберемся через метро. Эй, сто седьмой, не стой истуканом, это пугает. Пошли уже...
Ни разу не программист, буду рад критике и посильной помощи по корректировке от тех, кому "больно глазам")))
Вдохновение... Хочется открыть IDE, написать говнокод, и дебажить, дебажить задыхаясь от восторга...
Шутка моя, а картинка найдена на просторах интернета.
Мы постарались сделать каждый город, с которого начинается еженедельный заед в нашей новой игре, по-настоящему уникальным. Оценить можно на странице совместной игры Torero и Пикабу.
Реклама АО «Кордиант», ИНН 7601001509