Да, я пришёл примерно к такой же схеме. Верхнеуровнево - разные профили в firefox отправляют трафик в разные сетевые интерфейсы. Это позволяет добиться гарантированно точной выборочной маршрутизации, и по удобству меня вполне устраивает, но всё-таки немножко монструозное решение
Получается, вы заходите на нужный ресурс, тут же в админке видите весь список актуальных доменов ресурса, и потом вручную назначаете им всем правила что их нужно направлять в туннель?
По второму - я имел ввиду то, что у вас не возникает проблемы с "кэшем" dns? Т.е. когда адреса фактически сменились, но утилита занимающаяся маршрутизацией ещё отправляет в туннель старые адреса, в то время как фактически уже используются новые?
Добрый вечер. Интересный проект, спасибо за статью!
Подскажите пожалуйста, как именно происходит перенаправление выборочного трафика в туннель? Я очень хочу пользоваться чем-нибудь подобным, что решает задачу выборочного обхода блокировок, но это никогда не получается просто и удобно. Пытался запилить похожую систему себе самостоятельно, но именно в таком виде как у вас так и не смог достичь нужных результатов.
Я делал себе в своё время похожую систему основанную на policy based routing, настроил клиентское vpn-соединение, получил новый сетевой интерфейс в дополнение к основному, и теперь я вроде как могу управлять тем какой куда трафик отправлять с помощью ipset. Мне не нужны были обходы блокировок абсолютно всего что заблокировано, и всего списка antifilter, только некоторых сайтов. Основной загвоздкой было вот что - ipset управляет именно адресами, но не доменами и не сессиями в браузере, о браузерах, приложениях и других прикладных штуках он вообще ничего не знает. Постараюсь пояснить:
1) Допустим я открываю сайт, например условный инстаграм, вижу что он заблокирован. Я могу добавить домен инстаграма в список перенаправляемого в туннель, однако помимо основного домена там подгружается ещё целая куча всего, разные домены s3 хранилищ, какие-то укороченные домены, плюс всякие интеграции и т.д. Многие из них не входят в вайлдкард и не являются субдоменами основного домена. Поэтому приходится кропотливо забивать их руками, пока сайт не загрузится, после чего ещё забивать руками все вторичные домены, пока сайт не просто загрузится, но ещё и станет исправно работать. Некоторые ресурсы начинают сходить с ума когда часть контента загрузилась через WAN, а часть через TUN. Домены могут переименовываться, добавляться и удаляться. Постоянно обновлять этот список - кропотливая работа, которая со временем жутко надоедает. Я не знаю как можно удобно решить эту проблему. Вы с таким сталкивались? Как получилось решить эту проблему?
2) Далее, допустим я добавил правила для перенаправления всех доменов. Список для ipset и таблица маршрутизации составляется в момент запуска сервиса, для каждого из доменов резолвятся его IP адреса, после чего сервис запоминает их и начинает работать. Многие ресурсы крупных компаний хостятся через cloudflare (блок IPv4 адресов 104/8 и ещё несколько), там на ресурсах может часто происходить ротация IP адресов. Или другая ситуация round-robin отдал сначала один адрес, а через некоторое время другой. Получается что policy-based-routing запомнил определённые адреса, но спустя какое-то время запрос на тот же самый ресурс будет выполнен уже к фактически другому IP адресу, и не попадёт в туннель, а пойдёт в обычный WAN. Для того чтобы всё починить нужно вручную перезапустить сервис policy-based-routing, что, разумеется, неудобно и неприятно и опять требует отвлечения внимания от текущих задач. При этом наглухо зароутить в туннель весь блок 104/8 тоже нельзя, потому что на нём хостится очень много разных ресурсов, включая российские и они начнут сходить с ума и неадекватно работать, либо будет постоянно бросаться капча и т.д. В результате хотел выборочно обойти блокировки, а по итогу - только сам себе заблокировал доступ к целой горе незаблокированных ресурсов. У вас как-нибудь получилось решить такую проблему?
3) Допустим я хочу забить в ipset чисто IP адреса, без оглядки на домены. Т.е. получить все возможные адреса компании, строго забить их и забыть про все неудобства связанные с доменами. Тут опять облом, потому что получить полностью все адреса не всегда легко. Не везде эту информацию можно легко найти, не так просто их взять и собрать, плюс опять же проблема с блоками cloudflare - адреса могут постоянно плавать в них и ротироваться. Этот подход ещё менее надёжный чем с управлением доменами. Как всё-таки вы поступаете - работаете с доменами или с адресами?
В общем, я упёрся в то что именно при подобном подходе приходилось постоянно перезапускать сервис, постоянно обновлять руками списки доменов и адресов. Это было настолько неудобно, что пришлось перейти к совершено другой схеме, но я не теряю надежды что что-нибудь можно выжать и такого подхода как описан у вас, но вот обозначенные выше проблемы при его использовании пока что не смог решить. Буду признателен, если дадите пояснения на мои вопросы и дадите информации для размышления.
Мне однажды доводилось принимать участие в проведении бесплатного обучения по программированию. Компания, в которой я работал, проводила курсы по Java. Дело было в маленьком провинциальном городе, сама компания работала на московского заказчика. Количество разработчиков в городе, в те далёкие дохайповые времена, исчислялось, как мне кажется, несколькими десятками человек, очень были нужны новые люди. Компания объявила обучение, оно длилось несколько месяцев и было бесплатным, а основной целью для нас было - найти новых людей, которых можно взять в джуны. К нам поступило довольно много разных людей. Кто-то уже имел какой-то минимальный любительский опыт написания кода за плечами, кто-то был с местного градообразующего производственного предприятия и работал только поддерживая жуткий малопонятный софт написанный на делфи, кто-то вообще пришёл просто потому что бесплатно. Я в этом процессе выполнял роль "ментора" как бы это назвали на современных курсах - проверял домашние задания, помогал людям если у них были вопросы и т.д.
Так вот, по итогу обучения могу сказать следующее: из группы в несколько десятков человек большая часть в какой-то момент пропала, потому что у них были более важные дела. Какая-то часть не вывезла обучение, потому что по привычке пришла с майндсетом "я пришёл, учите меня" и проявляла ноль инициативы, им казалось что поскольку они отсидели занятия, этого достаточно чтобы их взяли на работу. Лично мне наиболее жалко было тех кто пришёл с градообразующего завода, они уже там много лет работали программистами и даже получали высокую по меркам города зарплату, но уровень их квалификации и деградация способности к обучению были таковы, что мне было сложно объяснить им самые основные концепции ООП - классы и т.д., и что писать весь код огромного проекта в одном файле - это не нормально. Взяли по итогу из всей группы одного талантливого парня самоучку, который имел хорошее техническое и аналитическое мышление, кое-что уже пробовал писать для себя сам ещё до поступления на обучение, был готов вкалывать и проявлял инициативу в обучении, самостоятельно изучал вещи, напрямую не затронутые в курсе.
После того случая, я некоторое время сидел и думал, как стоило правильно поступить? Довольно быстро я пришёл к очевидному выводу, что к люди не ценят бесплатные вещи. Однако что из этого следует дальше? Стоило ли сделать обучение платным, но за символическую цену? Это отсеет большинство "мимокрокодилов", однако не решает проблему с тем, что на обучение будут приходить люди, которые на самом деле не готовы проявлять какую-либо инициативу достаточную чтобы освоить достаточно большой объём знаний и навыков чтобы стать разработчиком. В обучение за "сотни тыщщ" я тоже не верю, всем известные продавцы курсов "войти-в-айти" занимаются отбиванием чудовищных размеров рекламных бюджетов, а людям они продают скорее идею изменить жизнь, чем обучение. Вся информация с подобных курсов легко ищется в интернете, а "структурирование информации", "подача", "менторство" и "помощь с трудоустройством" часто оказываются пустышкой или рекламной заманухой. Тоже так себе формат - безусловно он набивает кошельки владельцев этого бизнеса, но вот людям он несёт мало пользы, а если человеку нравится и хочется учить, передавать знания, да он ещё и готов это делать бесплатно, то разумеется он желает тратить время на тех, кому это по настоящему нужно и по настоящему принесёт пользу.
Ваш подход, кажется, очень неплох. Я даже не подумал о таком в своё время. Спасибо за статью!
Согласен на 100%, именно это же хотел написать. Если уж всё равно взяли решение в духе "погуглили, нашли за полчаса на 4pda", то взяли бы уж лучше и впилили opengapps-ы, всё равно же же нынешней России начихать на лицензионные соглашения. Были бы чистые и честные гугл сервисы, а так сейчас подставят под удар один из самых важных проектов для открытого андроида
Есть опенсорсный плагин для браузера, ссылку оставлять не буду, чтобы не потёрли сообщение, гуглится легко - habrosanitizer. Очень высоко рекомендую, без него хабр читать стало правда тяжело. Плагин позволяет точечно скрывать из ленты публикации отдельных авторов, отдельные корпоративные блоги и отдельные хабы Опубликован в сторах аддонов для браузеров chrome и firefox, исходники - на гитхабе. На гитхабе репо переведён в архив, но, при этом, плагин, пока ещё, к счастью, жив и работает.
Блокировка отдельных пользователей - это как раз ваш случай. Думаю что читатели Хабра сами примерно представляют "золотой список имён" который напрашивается на сокрытие из ленты.
Блокировка по конкретным корпоративным блогам - это то, ради чего этот плагин и задумывался. Показывать пальцем на конкретные компании было бы не вежливо, и я этого делать не буду, но вы и сами, без моей помощи, можете наткнуться на блоги компаний, в которых копирайтеры, пишут на хабр унылую, никому не интересную корпоративную джинсу, но ставят публикацию в популярные хабы и просят всех своих сотрудников проплюсовать статью и кинуть в закладки. Иногда это выглядит очень забавно: вышла статья, у неё почти моментально появляется 20 плюсов и 20 сохранений в закладки, читаешь - материал мягко говоря, не очень, смотришь автора - "блог компании Х", количество сотрудников - 20, при этом у компании довольно много публикаций и у всех ~20 плюсов ~20 сохранений в закладки. Как говорится, "Совпадение? Не думаю". Лично я чаще прибегаю к блокировке по конкретному имени, т.к. бывает что внутри корпоративного блога есть авторы, которые пишут интересно, но вот для таких клинических случаев можно скрыть и весь блог целиком.
Блокировка по хабам тоже очень важна, т.к. умная лента хабра настолько умна, что часто довольно настойчиво выкидывает в ленту статьи из хабов, на которые пользователь вообще не подписан, и никогда не был подписан. Мне таких образом, например, пришлось заблокировать хаб "управление продажами", статьи из которого каким-то образом постоянно оказывались в моей ленте, хотя я подобный материал вообще не читаю. Эта же фича позволяет исключить из ленты статьи, в которых авторы злоупотребляют указанием большего количества названий хабов, чем на самом деле предполагает тематика статьи.
Когда установите плагин, в настройках обязательно активируйте изначально выключенную функцию "show quick UI actions". После этого у вас при открытии хабра в ленте, в шапке статьи, рядом с именами авторов, копоративных блогов и хабов, появятся кнопки быстрой блокировки. Один клик - и хабр снова торт
Добрый вечер. Решил спустя несколько месяцев сделать небольшой апдейт по теме статьи. Возможно кому-то это окажется полезным.
В общем, я решил придать лоска, шарма и благородства данному велосипеду, и запилил плагин для андроид студии, который делает, по сути, всё то же самое что и скрипты приведённые в статье, только лучше - красиво и удобно, одной кнопкой через гуй и самое главное - единообразно на всех операционных системах, включая windows. Были также поправлены некоторые баги оригинального плагина сборки, например невозможность передать apk с сервера на локальный компьютер на версии AGP > 7.0.2, невозможность нормально передавать файлы на сервер с локального компьютера на винде и т.д.
Плагин уже готов и опубликован в маркетплейсе JetBrains. Можете установить его прямо из настроек андроид студии. Заходите в настройки, раздел Plugins, вбивайте в поиске название "SkyForge" и тыкайте "Установить".
На тулбаре запуска рядом с кнопками Run и Debug появляется три новых кнопки:
Открытие окна настроек удалённой сборки для IDE. По сути - конфиг для ssh + несколько дополнительных опциональных параметров
Подготовка зависимостей для сборки проекта на удалённом сервере. После того как настроен ssh доступ, ткните её один раз, она проверит наличие на машине нужных версий JDK, Android SDK, cmdline-tools, platform-tools, build-tools и т.д, установит их в систему если чего-то не хватает (пока поддерживается только Ubuntu 20+)
Тоггл-кнопка, переключатель, показывает какой режим сборки в данный момент активирован (сборка на локальной машине / сборка на сервере) и позволяет в один тык переключиться в другой режим
Теперь достаточно один раз в настройках прописать параметры подключения к серверу по ssh, и далее просто кнопочкой включать и выключать этот режим когда требуется. Нажали один раз - все команды gradle начинают выполняться на сервере вместо локальной машины, нажали второй раз - всё возвращается в исходный режим и все gradle команды выполняются локально (это может быть полезно в случае, например, потери связи с сервером, чтобы не блокировать себе работу).
Теперь нет необходимости никакие дополнительные файлы класть в корень проекта, добавлять какие-то плагины в проект и т.д. Не будет ни одной строчки в git diff. Не потребуется также не забывать "отключать" режим сборки на сервере чтобы gradle на локальном компьютере мог нормально работать с другими проектами (init-script сборки на удалённом сервере теперь не блокирует их работу). Также добавлены некоторые неудобства и исправлены некоторые ошибки по мелочи.
Всё остальное, как и в случае с решением на скриптах, остаётся как было - stdout процесса сборки исправно отображаются в студии, вся работа производится как и раньше через гуй, отладка на реальном устройстве - всё по старому.
Если вдруг вы воспользовались этим плагином, то я буду очень благодарен если в ответ на этот комментарий или в пм вы закинете обратную связь и/или какие-то идеи по фичам. У меня самого имеются кое-какие планы на улучшения, но хотелось бы понимать, что вообще ожидает пользователь.
Да, абсолютно любой. Т.е. если в системе несколько пользователей, например вы пользуетесь компьютером всей семьёй, пользователь условный X может читать личные файлы пользователя Y (но не может их изменять или удалять). Всегда раздражала эта особенность макоси.
Причём многие на эту проблему эплу неоднократно указывали, писали в техподдержку, но они всё время пишут отписки в духе "так надо и вообще всё будет хорошо". Может быть я что-то не понимаю во внутрянке макоси, но пока что я нигде не нашёл внятного ответа от эпла на вопрос зачем выставлены такие права доступа на директории которые являются приватными и предназначаются для одного конкретного пользователя.
Приходится делать руками chmod хоумдиректории своего системного пользователя и менять настройки на права которые ставятся на новые файлы по умолчанию.
О, очень знакомая история! Я тоже получаю предложения о работе адресованные другому человеку: по почте, в телегу, во всех каналах связи, где у меня есть публичные страницы с моим постоянным старым никнеймом. Причём никнеймы у нас вообще НЕ пересекаются.
Так случилось, что я около шести лет назад работал разработчиком в одном российском банке, и там со мной, как я выяснил позже, работал мой полный тёзка по имени и фамилии. Только я был джава-бэкендером, а он - дата-инженером. И вот что выходит: мы с ним оба технари, оба примерно одного возраста, оба в одно и тоже время работали в одной компании.
В какой-то момент, несколько лет назад, по какому-то странному стечению обстоятельств, системы, которыми пользуются эйчары для поиска кандидатов связали два наших профиля в один. И теперь я регулярно получаю целую гору предложений о работе дата инженером. Причём, я даже не знаю его лично, никаких его контактов у меня нет. Нисколько не удивлюсь, если он также получает гору предложений по вакансиям Java/Kotlin/Android, и тоже не знает куда их все девать. Павел, если ты вдруг это читаешь, отзовись, обменяемся контактами, будем доставлять сообщения до адресатов :)
У меня под рукой уже лежит заготовленный текст ответа, который я копи-пащщу в ответ на все подобные письма и сообщения. Я там объясняю суть ситуации, говорю что письмо предназначается не мне и прошу поправить данные в их базе, но толку - ноль. Горы писем и сообщений как шли, так и идут
Как разработчик старой школы, пришедший в индустрию по любви, с грустью наблюдаю данную ситуацию с момента начала хайпа вокруг курсов "войти-в-айти".
В общем-то, мы наблюдаем закономерный итог того, что сфера много лет была перекормлена лёгкими деньгами, экономическим благополучием и стабильностью, а сложность работы во много раз снизилась, в силу разделения труда, выработки лучших практик, превращения всего в конвеер, как на заводе, и т.д. Теперь не обязательно быть выдающимся талантом, который умеет делать всё, достаточно просто выучить устоявшиеся практики, фреймворки, почитать как делать X, Y и Z и всё - вы готовы к работе. В общем-то и курсы "войти-в-айти" появились именно потому что работать стало просто.
Разумеется это привлекает новых людей. Отсутсвие нормальных социальных лифтов для большей части населения страны приводит к тому, что люди ломятся в сферу, в которой, возможно, некоторым из них вообще не будет нравиться работать, и в которую они сами не внесут никакого значительного вклада, но, пока что, работы много, хватает на всех специалистов всех уровней. Можно ли осуждать желание людей жить достойно и обеспечивать достойную жизнь своей семье? Тем более что ИТ - это вообще не большие и лёгкие деньги, это просто более менее неплохая оплата за квалифицированный труд, и во многих странах вообще считается абсолютно рядовой, а не престижной деятельностью, но в России, в виду застоя, выглядит как прорыв.
Среди новых людей работа в ИТ закономерно привлекает в том числе и тех, кого в работе не интересует ничего кроме получения зарплаты. К сожалению, при большом желании и современных аджайл процессах перегруженных сомнительными активностями, искусный бездельник может создавать на работе имитацию бурной деятельности месяцы, а то и годы, и оставаться незамеченным. Особенно привлекательно это выглядит в странах, где уволить человека не такой уж простой квест, и всё это, естественно, увеличивает риски для нанимающих компаний. Недаром же на курсах сейчас куда больше внимания уделяется именно прохождению собеседований, а не качественному выполнению работы. Как говорится, рыночек порешал. И, да, как верно заметили в комментариях выше - получилась классическая трагедия общин.
Я категорически отрицательно отношусь к лжи в резюме, и сам так никогда не делаю, однако я также понимаю, что я рассуждаю с позиции человека, который уже давно в индустрии, уже имеет некий статус-кво. Возможно, для тех кто сейчас только ищет первую работу просто не остаётся никакого иного выбора кроме как нарисовать себе выдуманный опыт, по крайней мере чтобы пройти этап отбора у эйчаров.
С другой стороны, по своему опыту собеседований, могу сказать что подобных кандидатов пока-что вычислять не то чтобы сильно сложно. Кандидат может убедительно отвечать на типовые вопросы, быть приятным и сыпать софт-скиллсами как из рога изобилия, но вопросы на знание технологий "в глубину", открытые вопросы на понимание хода мысли, рассуждение, любой вопрос на технический кругозор, интересы, понимание особенностей различных решений, очевидных для тех кто с этим поработал и неочевидных для тех кто о них просто почитал, вопросы на решение задач, для которых не существует выработанных лучших практик, только неидеальные, подходящие в зависимости от обстоятельств под тот или иной проект, варианты решений со своими преимуществами и недостатками и нарисовавший опыт кандидат начинает сыпаться - некоторые вещи приходят только с опытом, его, к счастью, на курсах не купишь. К сожалению, это всё усложняет процесс найма и для кандидатов, и для компаний, создаёт кучу ненужных ритуалов, бюрократии и проверок знаний которые в работе в общем-то не потребуются (привет FAANG-like интервью), тратит значительно больше времени собеседующего и требует от него определённых, вообще не связанных с профессией навыков - умения выявлять ложь (приходится бить софтскиллсы софскиллсами, как клин клином), это невероятно повышает стоимость найма и риски для бизнеса, и что с этим делать - непонятно. У меня для себя нет хорошего ответа. Понятно что найм вроде бы сломан, но не понятно где именно и как его можно починить.
За себя не переживаю, опыта и экспертизы для перепрыгивания заградительного входного порога, по крайней мере для компаний в России и СНГ, у меня достаточно. Обидно за новичков, которым было бы действительно по-настоящему интересно работать в сфере технологий, программировать, творить, приносить пользу, создавать сложные инженерные вещи
По моему скромному опыту работы с движками которые определяют лицо, большинство опорных точек которые детектят на лице и используют в распознавании находятся в области у глаз и бровей, а меньшинство лежит в области на лбу и выше, и в области ниже носа. Из за этого использование масок — не такая эффективная мера как хотелось бы. Причём для человека также естественно обращать внимание именно на эту часть лица, о чём может напомнить старая шутка с пикабу:
Я пробовал для интереса разные подходы и наилучший результат получил когда:
— нарушается симметрия лица
— сокращается количество точек в этой самой критической области вокруг глаз
На практике я закрывал один глаз «пиратской повязкой», которая при этом закрывала бровь и некоторую область под глазом. В результате движок даже не понимал что это лицо, хотя всё остальное было на месте. Возможно длинная чёлка закрывающая поллица будет даже ещё эффективнее (а заодно позволит ненадолго вернуться в 2007)
Спасибо большое авторам конкурса! Участвовал в Технотексте второй раз, приятно видеть что уже второй раз моя статья попадает в шортлист. Я пишу редко, стараюсь вложить время и усилия во что-то действительно стоящее, мне приятно что это находит отклик у читателей. Отдельное спасибо за то что опубликовали подробный разбор с оценками по баллам. Постараюсь поработать со своими слабыми сторонами, и в дальнейшем порадовать читателей Хабра ещё более интересным и качественным материалом
Хороший и полезный обзор приёмов, спасибо! От себя могу добавить ещё пару пунктов:
1) Выставление minSdk на 24 позволяет избавиться от части автоматически сгенерированных растровых картинок из векторов содержащих тэг gradient - этот тэг не корректно обрабатывается до апи 23 включительно и вызывает краш при обращении к ресурсу в рантайме, поэтому gradle во время сборки для всех векторных изображений содержащих тэг gradient генерирует растровые png изображения под соответствующий dpi. Также начиная с minsdk 24 немного уменьшается размер dex-файлов (скомпилированного байткода), точных причин не вспомню, но кажется связано это с более полноценной поддержкой java 8. Совет, разумеется, применим не для всех, но если есть возможность сделать minSdk 24 - то это круто. 2) Иногда вручную получается оптимизировать растровые картинки лучше чем автоматическими инструментами. Писал для интереса инструмент который рекурсивно ходил по директории с ресурсами и сначала пытается оптимизировать изображения с помощью pngquant, а затем преобразовывает их в webp формат через cwebp. Проблема в том что разные изображения содержат разные цвета и другие параметры, и одни можно сжать сильнее других без потери качества, а другие начнут видимо терять качество даже при небольшой обработке. Поэтому когда я проходился по всем изображениям в проекте вручную и где-то вручную пропорционально сжимал размер в пикселях, где-то руками удалял сохранённые с файлом метаданные, где-то больше или меньше оптимизировал png через pngquant, и с большим или меньшим значением качества прогонял преобразование в webp, контролируя визуально итоговое качество, то у меня получилось ужать размер ресурсов в конечном апк почти на 70% лучше, чем в случае применения автоматического подхода. Некоторые изображения получилось сжать в разы, и даже десятки раз, личный рекорд - более чем в 100 раз (png 1.2Мб без видимой потери качества был ужат до 11 Кб)
Злые языки поговаривают что все эти призывы «остановиться во имя будущего человечества» на самом деле являются лоббированием бизнес интересов компании Google которые значительно отстают в своих моделях и не успевают выкатить на рынок конкурентоспособный продукт
Это конечно не тематика хабра, и вообще махровая политика, но, по ряду косвенных признаков, выглядит всё так, что государство несколько лет назад взяло осознанный курс на полное разоружение основной массы населения, кроме привилегированных слоёв общества (доблестные стражи порядка, благородные военные и сотрудники ФСБ/ФСО, авторитеты с большими деньгами и кристальной чистотой перед законом, депутаты, честные слуги народа, и прочие глубоко уважаемые люди), и отклоняться от этого курса не собирается.
Государство ещё с начала 2010-х прижимает оружейную сферу разными поправками в ЗОО, НПА, часто противоречащими друг-другу и создающие разные правовые коллизии и разночтения. В госдуме подгоняют это под эмоциональный инфоповод "защитим детей", который легко продать большинству населения далёкого от сферы. Владельцев оружия в России мало, их мнение никому не интересно. И даже прошлогодняя инициатива по предложению пересмотра поправок в ЗОО так и затухла, никто её даже рассматривать не стал, хотя впервые, так или иначе, привлекла внимание всех кто интересуется этой тематикой.
Страдают от этого, разумеется, не массшутеры, которые легально приобретают оружие в магазинах, т.к. легко проходят бессмысленные формальные комиссии в ПНД, на которых врачу выдаётся аж 2 минуты (две минуты, Карл) на изучение человека, выявление проблем с башкой и составление заключения об отсутствии противопоказаний к обращению с оружием, включая всю бюрократическую писанину. Страдают не бандиты, которые просто достают оружие "с рук", а в последний год и пару месяцев его появилось в России более чем достаточно. Страдают не депутаты занимающиеся незаконной охотой, отстреливающие по 300 гусей потому что могут. Страдают не известные люди, вроде занимающего положение ответственного за природоохрану и сохранение популяции животных в России, но приложивший руку, в том числе лично, к истреблению животных больше чем кто бы то ни было в РФ. Эти себе всегда оружие достанут вне зависимости от правовых норм. Страдают не приблатнённые ребята намутившие себе личное КНО через лазейку в законе с "наградным" оружием для самых "приближённых".
Страдают жители дальних регионов РФ где владение оружием - необходимость, т.к. в местности обитает много опасных хищников. Страдают от этого рядовые порядочные охотники, придерживающиеся этики охотника и добывающие раз в сезон гуся и двух с половиной куропаток по путёвке. Страдают стрелки спортсмены, у которых прибавилось лишних забот и бюрократии. Страдает оружейный бизнес, особенно частный, это и без того был один из самых многострадальных бизнесов в РФ. Да и на государственном оружейном производстве это сказывается. ИМХО, конечно, но качество оружия сошедшего с ижмашевского конвеера в последние несколько лет не просто разочаровывает, оно пугает.
Так что, полагаю, если реально взглянуть на вещи, в ближайшие годы мы можем рассчитывать только на фаеры и хлопушки
В целом, согласен с вами. Я живу в небольшой квартирке, и мне в моих обстоятельствах нравится идея иметь одну маленькую коробочку делающую +/- всё что требуется от сетевого оборудования. К тому же у меня на роутер выделена отдельная линия на проводке, одна единственная отдельная розетка на отдельном автомате чтобы держать включённым роутер когда уезжаю из дома и вся остальная квартира обесточена. Полноценный настольный компьютер как-то более боязно оставлять надолго включённым.
Если б я был султан Если дорасту когда-нибудь до покупки собственного дома, то там крепко заморочусь с тем чтобы под сетевое оборудование и домашние сервера было специальное отдельное место, с отдельным питанием, и конечно вместо одной коробки-роутера, которая по сути: так себе компьютер + так себе коммутатор + так себе маршрутизатор + так себе точка доступа wifi, поставлю отдельное оборудование. Маршрутизатор на полноценном x86, коммутатор отдельный на много портов, патч-панель, проводка слаботочная по всем помещениям, отдельные хорошие wifi точки которые больше никакой работой не нагружены. Но пока что что имею - тем богат :)
В районе Сочи и Красной поляны территория заповедника, вооружённые егеря ходят патрулируют, но с медведями периодически столкнуться можно запросто, особенно если уходить вглубь 8-го, 9-го, 13-го маршрутов, в особенности если идти одному и молча. Мишки всегда убегают при встрече, пока что, к счастью, на неадекватное поведение с их стороны не нарывался, но я и сам не допускаю глупостей: во время гона в лес не хожу, в глухих кустах стараюсь не шариться, в медвежьи места один стараюст не гулять, хлопушки и фальшфаеры собой на всякий случай имею. Да и медведи в кавказском регионе не крупные и не агрессивные, пищи им там хватает, люди за порядком стараются следить, свалки, несмотря на все старания "особенно культурных" туристов, особо не возникают, их стараются убирать.
Это ИМХО конечно, но от оружия на маршруте в районе Сочи будет больше проблем чем пользы. Ходить со своим оружием по сочинским лесам с целью защиты от животных *втеории* возможно, но на практике охота в заповеднике запрещена (если вы не депутат-единорос или друг Валуева), и наличие у вас оружия будет однозначно расценено как желание незаконно поохотиться. Учитывая неоднозначность трактовки, противоречащие друг-другу НПА, особенности ЗОО, особенно после прошлогодних поправок и в целом беспредел в правоприменении - нарвётесь на штраф и изъятие, оно вам надо? К тому же если у вас гладкая двенашка, то вы её в любом случае будете использовать только как хлопушку чтобы отпугнуть медведя, стрелять двенашкой в медведя - очень сомнительная затея. А если нет разницы - зачем весь геморрой связанный со стволом?
Ходил как-то в групповой поход на дальнем востоке, вот там иметь при себе оружие - нормально, и относятся к этому с пониманием. Туристов там меньше, медведей - больше и они крупнее. Ведущий группы был со своим оружием, но тоже с обычным 26-ым ижом чтобы просто "пугнуть" при случае, там места намного более дикие и такого лощёного хипстерского туризма, инфраструктуры и сервиса как в районе Сочи там нет. Воспользоваться к счастью ни разу не пришлось, шли группой, разговаривали, на медведей ни разу не наткнулись, один раз в паре десятков метров встретили росомаху, но она дала дёру как увидела нас, бахнуть чтобы напугать её не пришлось.
Добрый день, спасибо за ответ.
Да, я пришёл примерно к такой же схеме. Верхнеуровнево - разные профили в firefox отправляют трафик в разные сетевые интерфейсы. Это позволяет добиться гарантированно точной выборочной маршрутизации, и по удобству меня вполне устраивает, но всё-таки немножко монструозное решение
Спасибо за ответ.
Получается, вы заходите на нужный ресурс, тут же в админке видите весь список актуальных доменов ресурса, и потом вручную назначаете им всем правила что их нужно направлять в туннель?
По второму - я имел ввиду то, что у вас не возникает проблемы с "кэшем" dns? Т.е. когда адреса фактически сменились, но утилита занимающаяся маршрутизацией ещё отправляет в туннель старые адреса, в то время как фактически уже используются новые?
Добрый вечер. Интересный проект, спасибо за статью!
Подскажите пожалуйста, как именно происходит перенаправление выборочного трафика в туннель? Я очень хочу пользоваться чем-нибудь подобным, что решает задачу выборочного обхода блокировок, но это никогда не получается просто и удобно. Пытался запилить похожую систему себе самостоятельно, но именно в таком виде как у вас так и не смог достичь нужных результатов.
Я делал себе в своё время похожую систему основанную на policy based routing, настроил клиентское vpn-соединение, получил новый сетевой интерфейс в дополнение к основному, и теперь я вроде как могу управлять тем какой куда трафик отправлять с помощью ipset. Мне не нужны были обходы блокировок абсолютно всего что заблокировано, и всего списка antifilter, только некоторых сайтов. Основной загвоздкой было вот что - ipset управляет именно адресами, но не доменами и не сессиями в браузере, о браузерах, приложениях и других прикладных штуках он вообще ничего не знает. Постараюсь пояснить:
1) Допустим я открываю сайт, например условный инстаграм, вижу что он заблокирован. Я могу добавить домен инстаграма в список перенаправляемого в туннель, однако помимо основного домена там подгружается ещё целая куча всего, разные домены s3 хранилищ, какие-то укороченные домены, плюс всякие интеграции и т.д. Многие из них не входят в вайлдкард и не являются субдоменами основного домена. Поэтому приходится кропотливо забивать их руками, пока сайт не загрузится, после чего ещё забивать руками все вторичные домены, пока сайт не просто загрузится, но ещё и станет исправно работать. Некоторые ресурсы начинают сходить с ума когда часть контента загрузилась через WAN, а часть через TUN. Домены могут переименовываться, добавляться и удаляться. Постоянно обновлять этот список - кропотливая работа, которая со временем жутко надоедает. Я не знаю как можно удобно решить эту проблему. Вы с таким сталкивались? Как получилось решить эту проблему?
2) Далее, допустим я добавил правила для перенаправления всех доменов. Список для ipset и таблица маршрутизации составляется в момент запуска сервиса, для каждого из доменов резолвятся его IP адреса, после чего сервис запоминает их и начинает работать. Многие ресурсы крупных компаний хостятся через cloudflare (блок IPv4 адресов 104/8 и ещё несколько), там на ресурсах может часто происходить ротация IP адресов. Или другая ситуация round-robin отдал сначала один адрес, а через некоторое время другой. Получается что policy-based-routing запомнил определённые адреса, но спустя какое-то время запрос на тот же самый ресурс будет выполнен уже к фактически другому IP адресу, и не попадёт в туннель, а пойдёт в обычный WAN. Для того чтобы всё починить нужно вручную перезапустить сервис policy-based-routing, что, разумеется, неудобно и неприятно и опять требует отвлечения внимания от текущих задач. При этом наглухо зароутить в туннель весь блок 104/8 тоже нельзя, потому что на нём хостится очень много разных ресурсов, включая российские и они начнут сходить с ума и неадекватно работать, либо будет постоянно бросаться капча и т.д. В результате хотел выборочно обойти блокировки, а по итогу - только сам себе заблокировал доступ к целой горе незаблокированных ресурсов. У вас как-нибудь получилось решить такую проблему?
3) Допустим я хочу забить в ipset чисто IP адреса, без оглядки на домены. Т.е. получить все возможные адреса компании, строго забить их и забыть про все неудобства связанные с доменами. Тут опять облом, потому что получить полностью все адреса не всегда легко. Не везде эту информацию можно легко найти, не так просто их взять и собрать, плюс опять же проблема с блоками cloudflare - адреса могут постоянно плавать в них и ротироваться. Этот подход ещё менее надёжный чем с управлением доменами. Как всё-таки вы поступаете - работаете с доменами или с адресами?
В общем, я упёрся в то что именно при подобном подходе приходилось постоянно перезапускать сервис, постоянно обновлять руками списки доменов и адресов. Это было настолько неудобно, что пришлось перейти к совершено другой схеме, но я не теряю надежды что что-нибудь можно выжать и такого подхода как описан у вас, но вот обозначенные выше проблемы при его использовании пока что не смог решить. Буду признателен, если дадите пояснения на мои вопросы и дадите информации для размышления.
Спасибо!
О, автору моё уважение! Очень интересный подход.
Мне однажды доводилось принимать участие в проведении бесплатного обучения по программированию. Компания, в которой я работал, проводила курсы по Java. Дело было в маленьком провинциальном городе, сама компания работала на московского заказчика. Количество разработчиков в городе, в те далёкие дохайповые времена, исчислялось, как мне кажется, несколькими десятками человек, очень были нужны новые люди. Компания объявила обучение, оно длилось несколько месяцев и было бесплатным, а основной целью для нас было - найти новых людей, которых можно взять в джуны. К нам поступило довольно много разных людей. Кто-то уже имел какой-то минимальный любительский опыт написания кода за плечами, кто-то был с местного градообразующего производственного предприятия и работал только поддерживая жуткий малопонятный софт написанный на делфи, кто-то вообще пришёл просто потому что бесплатно. Я в этом процессе выполнял роль "ментора" как бы это назвали на современных курсах - проверял домашние задания, помогал людям если у них были вопросы и т.д.
Так вот, по итогу обучения могу сказать следующее: из группы в несколько десятков человек большая часть в какой-то момент пропала, потому что у них были более важные дела. Какая-то часть не вывезла обучение, потому что по привычке пришла с майндсетом "я пришёл, учите меня" и проявляла ноль инициативы, им казалось что поскольку они отсидели занятия, этого достаточно чтобы их взяли на работу. Лично мне наиболее жалко было тех кто пришёл с градообразующего завода, они уже там много лет работали программистами и даже получали высокую по меркам города зарплату, но уровень их квалификации и деградация способности к обучению были таковы, что мне было сложно объяснить им самые основные концепции ООП - классы и т.д., и что писать весь код огромного проекта в одном файле - это не нормально. Взяли по итогу из всей группы одного талантливого парня самоучку, который имел хорошее техническое и аналитическое мышление, кое-что уже пробовал писать для себя сам ещё до поступления на обучение, был готов вкалывать и проявлял инициативу в обучении, самостоятельно изучал вещи, напрямую не затронутые в курсе.
После того случая, я некоторое время сидел и думал, как стоило правильно поступить? Довольно быстро я пришёл к очевидному выводу, что к люди не ценят бесплатные вещи. Однако что из этого следует дальше? Стоило ли сделать обучение платным, но за символическую цену? Это отсеет большинство "мимокрокодилов", однако не решает проблему с тем, что на обучение будут приходить люди, которые на самом деле не готовы проявлять какую-либо инициативу достаточную чтобы освоить достаточно большой объём знаний и навыков чтобы стать разработчиком. В обучение за "сотни тыщщ" я тоже не верю, всем известные продавцы курсов "войти-в-айти" занимаются отбиванием чудовищных размеров рекламных бюджетов, а людям они продают скорее идею изменить жизнь, чем обучение. Вся информация с подобных курсов легко ищется в интернете, а "структурирование информации", "подача", "менторство" и "помощь с трудоустройством" часто оказываются пустышкой или рекламной заманухой. Тоже так себе формат - безусловно он набивает кошельки владельцев этого бизнеса, но вот людям он несёт мало пользы, а если человеку нравится и хочется учить, передавать знания, да он ещё и готов это делать бесплатно, то разумеется он желает тратить время на тех, кому это по настоящему нужно и по настоящему принесёт пользу.
Ваш подход, кажется, очень неплох. Я даже не подумал о таком в своё время. Спасибо за статью!
Террористы с удовольствием используют одобренный товарищем майором ТамТам и не парятся
Согласен на 100%, именно это же хотел написать. Если уж всё равно взяли решение в духе "погуглили, нашли за полчаса на 4pda", то взяли бы уж лучше и впилили opengapps-ы, всё равно же же нынешней России начихать на лицензионные соглашения. Были бы чистые и честные гугл сервисы, а так сейчас подставят под удар один из самых важных проектов для открытого андроида
Есть опенсорсный плагин для браузера, ссылку оставлять не буду, чтобы не потёрли сообщение, гуглится легко - habrosanitizer. Очень высоко рекомендую, без него хабр читать стало правда тяжело. Плагин позволяет точечно скрывать из ленты публикации отдельных авторов, отдельные корпоративные блоги и отдельные хабы Опубликован в сторах аддонов для браузеров chrome и firefox, исходники - на гитхабе. На гитхабе репо переведён в архив, но, при этом, плагин, пока ещё, к счастью, жив и работает.
Блокировка отдельных пользователей - это как раз ваш случай. Думаю что читатели Хабра сами примерно представляют "золотой список имён" который напрашивается на сокрытие из ленты.
Блокировка по конкретным корпоративным блогам - это то, ради чего этот плагин и задумывался. Показывать пальцем на конкретные компании было бы не вежливо, и я этого делать не буду, но вы и сами, без моей помощи, можете наткнуться на блоги компаний, в которых копирайтеры, пишут на хабр унылую, никому не интересную корпоративную джинсу, но ставят публикацию в популярные хабы и просят всех своих сотрудников проплюсовать статью и кинуть в закладки. Иногда это выглядит очень забавно: вышла статья, у неё почти моментально появляется 20 плюсов и 20 сохранений в закладки, читаешь - материал мягко говоря, не очень, смотришь автора - "блог компании Х", количество сотрудников - 20, при этом у компании довольно много публикаций и у всех ~20 плюсов ~20 сохранений в закладки. Как говорится, "Совпадение? Не думаю". Лично я чаще прибегаю к блокировке по конкретному имени, т.к. бывает что внутри корпоративного блога есть авторы, которые пишут интересно, но вот для таких клинических случаев можно скрыть и весь блог целиком.
Блокировка по хабам тоже очень важна, т.к. умная лента хабра настолько умна, что часто довольно настойчиво выкидывает в ленту статьи из хабов, на которые пользователь вообще не подписан, и никогда не был подписан. Мне таких образом, например, пришлось заблокировать хаб "управление продажами", статьи из которого каким-то образом постоянно оказывались в моей ленте, хотя я подобный материал вообще не читаю. Эта же фича позволяет исключить из ленты статьи, в которых авторы злоупотребляют указанием большего количества названий хабов, чем на самом деле предполагает тематика статьи.
Когда установите плагин, в настройках обязательно активируйте изначально выключенную функцию "show quick UI actions". После этого у вас при открытии хабра в ленте, в шапке статьи, рядом с именами авторов, копоративных блогов и хабов, появятся кнопки быстрой блокировки. Один клик - и хабр снова торт
Добрый вечер. Решил спустя несколько месяцев сделать небольшой апдейт по теме статьи. Возможно кому-то это окажется полезным.
В общем, я решил придать лоска, шарма и благородства данному велосипеду, и запилил плагин для андроид студии, который делает, по сути, всё то же самое что и скрипты приведённые в статье, только лучше - красиво и удобно, одной кнопкой через гуй и самое главное - единообразно на всех операционных системах, включая windows. Были также поправлены некоторые баги оригинального плагина сборки, например невозможность передать apk с сервера на локальный компьютер на версии AGP > 7.0.2, невозможность нормально передавать файлы на сервер с локального компьютера на винде и т.д.
Плагин уже готов и опубликован в маркетплейсе JetBrains. Можете установить его прямо из настроек андроид студии. Заходите в настройки, раздел Plugins, вбивайте в поиске название "SkyForge" и тыкайте "Установить".
На тулбаре запуска рядом с кнопками Run и Debug появляется три новых кнопки:
Открытие окна настроек удалённой сборки для IDE. По сути - конфиг для ssh + несколько дополнительных опциональных параметров
Подготовка зависимостей для сборки проекта на удалённом сервере. После того как настроен ssh доступ, ткните её один раз, она проверит наличие на машине нужных версий JDK, Android SDK, cmdline-tools, platform-tools, build-tools и т.д, установит их в систему если чего-то не хватает (пока поддерживается только Ubuntu 20+)
Тоггл-кнопка, переключатель, показывает какой режим сборки в данный момент активирован (сборка на локальной машине / сборка на сервере) и позволяет в один тык переключиться в другой режим
Теперь достаточно один раз в настройках прописать параметры подключения к серверу по ssh, и далее просто кнопочкой включать и выключать этот режим когда требуется. Нажали один раз - все команды gradle начинают выполняться на сервере вместо локальной машины, нажали второй раз - всё возвращается в исходный режим и все gradle команды выполняются локально (это может быть полезно в случае, например, потери связи с сервером, чтобы не блокировать себе работу).
Теперь нет необходимости никакие дополнительные файлы класть в корень проекта, добавлять какие-то плагины в проект и т.д. Не будет ни одной строчки в git diff. Не потребуется также не забывать "отключать" режим сборки на сервере чтобы gradle на локальном компьютере мог нормально работать с другими проектами (init-script сборки на удалённом сервере теперь не блокирует их работу). Также добавлены некоторые неудобства и исправлены некоторые ошибки по мелочи.
Всё остальное, как и в случае с решением на скриптах, остаётся как было - stdout процесса сборки исправно отображаются в студии, вся работа производится как и раньше через гуй, отладка на реальном устройстве - всё по старому.
Если вдруг вы воспользовались этим плагином, то я буду очень благодарен если в ответ на этот комментарий или в пм вы закинете обратную связь и/или какие-то идеи по фичам. У меня самого имеются кое-какие планы на улучшения, но хотелось бы понимать, что вообще ожидает пользователь.
Спасибо!
Да, абсолютно любой. Т.е. если в системе несколько пользователей, например вы пользуетесь компьютером всей семьёй, пользователь условный X может читать личные файлы пользователя Y (но не может их изменять или удалять). Всегда раздражала эта особенность макоси.
Причём многие на эту проблему эплу неоднократно указывали, писали в техподдержку, но они всё время пишут отписки в духе "так надо и вообще всё будет хорошо". Может быть я что-то не понимаю во внутрянке макоси, но пока что я нигде не нашёл внятного ответа от эпла на вопрос зачем выставлены такие права доступа на директории которые являются приватными и предназначаются для одного конкретного пользователя.
Приходится делать руками chmod хоумдиректории своего системного пользователя и менять настройки на права которые ставятся на новые файлы по умолчанию.
О, очень знакомая история! Я тоже получаю предложения о работе адресованные другому человеку: по почте, в телегу, во всех каналах связи, где у меня есть публичные страницы с моим постоянным старым никнеймом. Причём никнеймы у нас вообще НЕ пересекаются.
Так случилось, что я около шести лет назад работал разработчиком в одном российском банке, и там со мной, как я выяснил позже, работал мой полный тёзка по имени и фамилии. Только я был джава-бэкендером, а он - дата-инженером. И вот что выходит: мы с ним оба технари, оба примерно одного возраста, оба в одно и тоже время работали в одной компании.
В какой-то момент, несколько лет назад, по какому-то странному стечению обстоятельств, системы, которыми пользуются эйчары для поиска кандидатов связали два наших профиля в один. И теперь я регулярно получаю целую гору предложений о работе дата инженером. Причём, я даже не знаю его лично, никаких его контактов у меня нет. Нисколько не удивлюсь, если он также получает гору предложений по вакансиям Java/Kotlin/Android, и тоже не знает куда их все девать. Павел, если ты вдруг это читаешь, отзовись, обменяемся контактами, будем доставлять сообщения до адресатов :)
У меня под рукой уже лежит заготовленный текст ответа, который я копи-пащщу в ответ на все подобные письма и сообщения. Я там объясняю суть ситуации, говорю что письмо предназначается не мне и прошу поправить данные в их базе, но толку - ноль. Горы писем и сообщений как шли, так и идут
Как разработчик старой школы, пришедший в индустрию по любви, с грустью наблюдаю данную ситуацию с момента начала хайпа вокруг курсов "войти-в-айти".
В общем-то, мы наблюдаем закономерный итог того, что сфера много лет была перекормлена лёгкими деньгами, экономическим благополучием и стабильностью, а сложность работы во много раз снизилась, в силу разделения труда, выработки лучших практик, превращения всего в конвеер, как на заводе, и т.д. Теперь не обязательно быть выдающимся талантом, который умеет делать всё, достаточно просто выучить устоявшиеся практики, фреймворки, почитать как делать X, Y и Z и всё - вы готовы к работе. В общем-то и курсы "войти-в-айти" появились именно потому что работать стало просто.
Разумеется это привлекает новых людей. Отсутсвие нормальных социальных лифтов для большей части населения страны приводит к тому, что люди ломятся в сферу, в которой, возможно, некоторым из них вообще не будет нравиться работать, и в которую они сами не внесут никакого значительного вклада, но, пока что, работы много, хватает на всех специалистов всех уровней. Можно ли осуждать желание людей жить достойно и обеспечивать достойную жизнь своей семье? Тем более что ИТ - это вообще не большие и лёгкие деньги, это просто более менее неплохая оплата за квалифицированный труд, и во многих странах вообще считается абсолютно рядовой, а не престижной деятельностью, но в России, в виду застоя, выглядит как прорыв.
Среди новых людей работа в ИТ закономерно привлекает в том числе и тех, кого в работе не интересует ничего кроме получения зарплаты. К сожалению, при большом желании и современных аджайл процессах перегруженных сомнительными активностями, искусный бездельник может создавать на работе имитацию бурной деятельности месяцы, а то и годы, и оставаться незамеченным. Особенно привлекательно это выглядит в странах, где уволить человека не такой уж простой квест, и всё это, естественно, увеличивает риски для нанимающих компаний. Недаром же на курсах сейчас куда больше внимания уделяется именно прохождению собеседований, а не качественному выполнению работы. Как говорится, рыночек порешал. И, да, как верно заметили в комментариях выше - получилась классическая трагедия общин.
Я категорически отрицательно отношусь к лжи в резюме, и сам так никогда не делаю, однако я также понимаю, что я рассуждаю с позиции человека, который уже давно в индустрии, уже имеет некий статус-кво. Возможно, для тех кто сейчас только ищет первую работу просто не остаётся никакого иного выбора кроме как нарисовать себе выдуманный опыт, по крайней мере чтобы пройти этап отбора у эйчаров.
С другой стороны, по своему опыту собеседований, могу сказать что подобных кандидатов пока-что вычислять не то чтобы сильно сложно. Кандидат может убедительно отвечать на типовые вопросы, быть приятным и сыпать софт-скиллсами как из рога изобилия, но вопросы на знание технологий "в глубину", открытые вопросы на понимание хода мысли, рассуждение, любой вопрос на технический кругозор, интересы, понимание особенностей различных решений, очевидных для тех кто с этим поработал и неочевидных для тех кто о них просто почитал, вопросы на решение задач, для которых не существует выработанных лучших практик, только неидеальные, подходящие в зависимости от обстоятельств под тот или иной проект, варианты решений со своими преимуществами и недостатками и нарисовавший опыт кандидат начинает сыпаться - некоторые вещи приходят только с опытом, его, к счастью, на курсах не купишь. К сожалению, это всё усложняет процесс найма и для кандидатов, и для компаний, создаёт кучу ненужных ритуалов, бюрократии и проверок знаний которые в работе в общем-то не потребуются (привет FAANG-like интервью), тратит значительно больше времени собеседующего и требует от него определённых, вообще не связанных с профессией навыков - умения выявлять ложь (приходится бить софтскиллсы софскиллсами, как клин клином), это невероятно повышает стоимость найма и риски для бизнеса, и что с этим делать - непонятно. У меня для себя нет хорошего ответа. Понятно что найм вроде бы сломан, но не понятно где именно и как его можно починить.
За себя не переживаю, опыта и экспертизы для перепрыгивания заградительного входного порога, по крайней мере для компаний в России и СНГ, у меня достаточно. Обидно за новичков, которым было бы действительно по-настоящему интересно работать в сфере технологий, программировать, творить, приносить пользу, создавать сложные инженерные вещи
Я пробовал для интереса разные подходы и наилучший результат получил когда:
— нарушается симметрия лица
— сокращается количество точек в этой самой критической области вокруг глаз
На практике я закрывал один глаз «пиратской повязкой», которая при этом закрывала бровь и некоторую область под глазом. В результате движок даже не понимал что это лицо, хотя всё остальное было на месте. Возможно длинная чёлка закрывающая поллица будет даже ещё эффективнее (а заодно позволит ненадолго вернуться в 2007)
Тысяча чертей! Вот именно ради такого я до сих пор читаю Хабр. Очень круто, спасибо!
Спасибо большое авторам конкурса! Участвовал в Технотексте второй раз, приятно видеть что уже второй раз моя статья попадает в шортлист. Я пишу редко, стараюсь вложить время и усилия во что-то действительно стоящее, мне приятно что это находит отклик у читателей. Отдельное спасибо за то что опубликовали подробный разбор с оценками по баллам. Постараюсь поработать со своими слабыми сторонами, и в дальнейшем порадовать читателей Хабра ещё более интересным и качественным материалом
Очередная отличная статья по оптимизации работы с большими проектами! Спасибо.
Хороший и полезный обзор приёмов, спасибо! От себя могу добавить ещё пару пунктов:
1) Выставление minSdk на 24 позволяет избавиться от части автоматически сгенерированных растровых картинок из векторов содержащих тэг gradient - этот тэг не корректно обрабатывается до апи 23 включительно и вызывает краш при обращении к ресурсу в рантайме, поэтому gradle во время сборки для всех векторных изображений содержащих тэг gradient генерирует растровые png изображения под соответствующий dpi. Также начиная с minsdk 24 немного уменьшается размер dex-файлов (скомпилированного байткода), точных причин не вспомню, но кажется связано это с более полноценной поддержкой java 8. Совет, разумеется, применим не для всех, но если есть возможность сделать minSdk 24 - то это круто.
2) Иногда вручную получается оптимизировать растровые картинки лучше чем автоматическими инструментами. Писал для интереса инструмент который рекурсивно ходил по директории с ресурсами и сначала пытается оптимизировать изображения с помощью pngquant, а затем преобразовывает их в webp формат через cwebp. Проблема в том что разные изображения содержат разные цвета и другие параметры, и одни можно сжать сильнее других без потери качества, а другие начнут видимо терять качество даже при небольшой обработке. Поэтому когда я проходился по всем изображениям в проекте вручную и где-то вручную пропорционально сжимал размер в пикселях, где-то руками удалял сохранённые с файлом метаданные, где-то больше или меньше оптимизировал png через pngquant, и с большим или меньшим значением качества прогонял преобразование в webp, контролируя визуально итоговое качество, то у меня получилось ужать размер ресурсов в конечном апк почти на 70% лучше, чем в случае применения автоматического подхода. Некоторые изображения получилось сжать в разы, и даже десятки раз, личный рекорд - более чем в 100 раз (png 1.2Мб без видимой потери качества был ужат до 11 Кб)
Злые языки поговаривают что все эти призывы «остановиться во имя будущего человечества» на самом деле являются лоббированием бизнес интересов компании Google которые значительно отстают в своих моделях и не успевают выкатить на рынок конкурентоспособный продукт
Это конечно не тематика хабра, и вообще махровая политика, но, по ряду косвенных признаков, выглядит всё так, что государство несколько лет назад взяло осознанный курс на полное разоружение основной массы населения, кроме привилегированных слоёв общества (доблестные стражи порядка, благородные военные и сотрудники ФСБ/ФСО, авторитеты с большими деньгами и кристальной чистотой перед законом, депутаты, честные слуги народа, и прочие глубоко уважаемые люди), и отклоняться от этого курса не собирается.
Государство ещё с начала 2010-х прижимает оружейную сферу разными поправками в ЗОО, НПА, часто противоречащими друг-другу и создающие разные правовые коллизии и разночтения. В госдуме подгоняют это под эмоциональный инфоповод "защитим детей", который легко продать большинству населения далёкого от сферы. Владельцев оружия в России мало, их мнение никому не интересно. И даже прошлогодняя инициатива по предложению пересмотра поправок в ЗОО так и затухла, никто её даже рассматривать не стал, хотя впервые, так или иначе, привлекла внимание всех кто интересуется этой тематикой.
Страдают от этого, разумеется, не массшутеры, которые легально приобретают оружие в магазинах, т.к. легко проходят бессмысленные формальные комиссии в ПНД, на которых врачу выдаётся аж 2 минуты (две минуты, Карл) на изучение человека, выявление проблем с башкой и составление заключения об отсутствии противопоказаний к обращению с оружием, включая всю бюрократическую писанину. Страдают не бандиты, которые просто достают оружие "с рук", а в последний год и пару месяцев его появилось в России более чем достаточно. Страдают не депутаты занимающиеся незаконной охотой, отстреливающие по 300 гусей потому что могут. Страдают не известные люди, вроде занимающего положение ответственного за природоохрану и сохранение популяции животных в России, но приложивший руку, в том числе лично, к истреблению животных больше чем кто бы то ни было в РФ. Эти себе всегда оружие достанут вне зависимости от правовых норм. Страдают не приблатнённые ребята намутившие себе личное КНО через лазейку в законе с "наградным" оружием для самых "приближённых".
Страдают жители дальних регионов РФ где владение оружием - необходимость, т.к. в местности обитает много опасных хищников. Страдают от этого рядовые порядочные охотники, придерживающиеся этики охотника и добывающие раз в сезон гуся и двух с половиной куропаток по путёвке. Страдают стрелки спортсмены, у которых прибавилось лишних забот и бюрократии. Страдает оружейный бизнес, особенно частный, это и без того был один из самых многострадальных бизнесов в РФ. Да и на государственном оружейном производстве это сказывается. ИМХО, конечно, но качество оружия сошедшего с ижмашевского конвеера в последние несколько лет не просто разочаровывает, оно пугает.
Так что, полагаю, если реально взглянуть на вещи, в ближайшие годы мы можем рассчитывать только на фаеры и хлопушки
В целом, согласен с вами. Я живу в небольшой квартирке, и мне в моих обстоятельствах нравится идея иметь одну маленькую коробочку делающую +/- всё что требуется от сетевого оборудования. К тому же у меня на роутер выделена отдельная линия на проводке, одна единственная отдельная розетка на отдельном автомате чтобы держать включённым роутер когда уезжаю из дома и вся остальная квартира обесточена. Полноценный настольный компьютер как-то более боязно оставлять надолго включённым.
Если б я был султанЕсли дорасту когда-нибудь до покупки собственного дома, то там крепко заморочусь с тем чтобы под сетевое оборудование и домашние сервера было специальное отдельное место, с отдельным питанием, и конечно вместо одной коробки-роутера, которая по сути: так себе компьютер + так себе коммутатор + так себе маршрутизатор + так себе точка доступа wifi, поставлю отдельное оборудование. Маршрутизатор на полноценном x86, коммутатор отдельный на много портов, патч-панель, проводка слаботочная по всем помещениям, отдельные хорошие wifi точки которые больше никакой работой не нагружены. Но пока что что имею - тем богат :)В районе Сочи и Красной поляны территория заповедника, вооружённые егеря ходят патрулируют, но с медведями периодически столкнуться можно запросто, особенно если уходить вглубь 8-го, 9-го, 13-го маршрутов, в особенности если идти одному и молча. Мишки всегда убегают при встрече, пока что, к счастью, на неадекватное поведение с их стороны не нарывался, но я и сам не допускаю глупостей: во время гона в лес не хожу, в глухих кустах стараюсь не шариться, в медвежьи места один стараюст не гулять, хлопушки и фальшфаеры собой на всякий случай имею. Да и медведи в кавказском регионе не крупные и не агрессивные, пищи им там хватает, люди за порядком стараются следить, свалки, несмотря на все старания "особенно культурных" туристов, особо не возникают, их стараются убирать.
Это ИМХО конечно, но от оружия на маршруте в районе Сочи будет больше проблем чем пользы. Ходить со своим оружием по сочинским лесам с целью защиты от животных *в теории* возможно, но на практике охота в заповеднике запрещена (если вы не депутат-единорос или друг Валуева), и наличие у вас оружия будет однозначно расценено как желание незаконно поохотиться. Учитывая неоднозначность трактовки, противоречащие друг-другу НПА, особенности ЗОО, особенно после прошлогодних поправок и в целом беспредел в правоприменении - нарвётесь на штраф и изъятие, оно вам надо? К тому же если у вас гладкая двенашка, то вы её в любом случае будете использовать только как хлопушку чтобы отпугнуть медведя, стрелять двенашкой в медведя - очень сомнительная затея. А если нет разницы - зачем весь геморрой связанный со стволом?
Ходил как-то в групповой поход на дальнем востоке, вот там иметь при себе оружие - нормально, и относятся к этому с пониманием. Туристов там меньше, медведей - больше и они крупнее. Ведущий группы был со своим оружием, но тоже с обычным 26-ым ижом чтобы просто "пугнуть" при случае, там места намного более дикие и такого лощёного хипстерского туризма, инфраструктуры и сервиса как в районе Сочи там нет. Воспользоваться к счастью ни разу не пришлось, шли группой, разговаривали, на медведей ни разу не наткнулись, один раз в паре десятков метров встретили росомаху, но она дала дёру как увидела нас, бахнуть чтобы напугать её не пришлось.