LINUX.ORG.RU

Избранные сообщения ZuBB

Интервью с Дугласом Крокфордом - создателем JSON

Форум — Talks

Дуглас Крокфорд - американский программист, занимающийся разработкой с 80х годов, работал в компании Atari, на студии Lucasfilm, был основателем нескольких стартапов.

Известен созданием формата обмена данными JSON, разработкой линтера JSLint, минификатора JSMin, разработкой типа для представления десятичных чисел с плавающей точкой DEC64. Является участником комитета по стандартизации TC39, принимал активное участие в разработке спецификации ECMAScript 2015 (ES6). Автор нескольких книг по JavaScript.

Интервью на русском языке выложено на youtube-канале https://www.youtube.com/watch?v=WSqCpWYfTFU

Основные тезисы:
  • Программистом стоит быть только если вы любите программировать
  • Дуглас начинал свою карьеру в качестве разработчика видео-игр, но сам в игры не играет
  • JSON хорош тем, что он всегда останется таким, какой он есть. Но если бы Дуглас разрабатывал его сейчас, то он бы его еще больше упростил
  • TypeScript не нужен
  • Статическая и сильная типизация не нужна. Динамическая и свободная система типов дает больше выразительности, возможностей и экономит время
  • Дуглас не доволен множеством нововведений в JS и он пользуется только подмножеством языка, как всегда и декларировал. Ему не нравится реализация Promise и он считает сахар async/await лишним.
  • 20-ти летние сеньоры были всегда, даже во времена его молодости. Это не веяние моды
  • Он ничего не знает и никогда не слышал о таких компаниях как Тинькофф, Сбербанк, Авито и Яндекс
  • Тесты на знания алгоритмов при приеме на работу бесполезны. Программистов надо отбирать по примерам их кода.
  • Чтобы стать крутым нужно постоянно учиться

 

javascript
()

Почему решая литкод ты никогда не станешь архитектором (но на самом деле никогда не хотел им быть)

Форум — Talks

Специальный выпуск для linux.org.ru.

Когда я был юношей, то они мне говорили «вырастешь — поумнеешь». Я вырос, но не поумнел. Но иногда я жалею, что не знал тогда того, что знаю сейчас — так и хочется написать тому юноше письмо из будущего, что я и намерен импровизировать в виде треда на LOR.

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

Поскольку первых людей сильно больше, чем вторых (соответственно спросу), то массовый программист, как правило, оценивается по тому, как много решений он может выдать между двумя глотками смузи. Индустрии нужно зарабатывать деньги на массовом конвеерном фуфле, индустрии не нужны оригинальные решения. Как решить большую сложную задачу на подобном конвеере? Взять больше смузи и хлебать чаще, посадить дополнительных смузихлебов на тестирование этого дела. Самое страшное — когда в подобном духе начинает работать Boeing, и самолеты начинают падать. Можно радоваться тому, что упал не ваш самолет, а можно подумать о том, что завтра ваше авто с вами за рулем может внезапно оказаться не ваше, потому что его хакнет 7-летний китайский ребенок, и единственная реальная защита — это тот факт, что Илон Маск платит всем денеги только чтобы уязвимостями в автомобилях и инфраструктуре не пользовались злоумышленники.

Мне вспоминается старый-престарый эпизод моей жизни, как я еще будучи школьником выиграл олимпиаду по информатике. Задача была на поиск кратчайшего пути (пардон, точного условия уже не помню, это было давно и неправда). Грамотный программист быстро выдаст вам «правильное» решение O(N log N) по алгоритму Дейкстры. Но поскольку на тот момент я не знал алгоритма Дейкстры и не был грамотным программистом, то вместо «правильного» решения выдал асимптотику O(N), заэксплуатировав некоторые особенности конкретных условий той задачи.

И второй эпизод, современный. Меня выбесило одно из недавних моих собеседований: некая контора дала мне тестовую задачку, являющуюся также одной из фундаментальных задач, решаемых их продуктом. Мне просто забыли сказать, что «правильный» метод должен быть O(N^3), и я случайно потратил целый день на разработку метода O(N^2), который оказался настолько неожиданным для «сеньоров», что им понадобилась целая неделя для анализа моего решения на 500 строчек (inb4: фу-фу, лапшемес), а на собеседование со мной собрали всю верхушку — на минуту у меня сложилось ощущение, будто меня собеседуют в гугл, а не в местную помойку. Я не удивлюсь, если вся их шарашка уже работает над интеграцией моего метода, и в скором времени получит премию, мол «наш отдел провел тщательные исследования предметной области...», а тебе, мартыха, хрен с маслом. И это собравшееся начальство на собеседовании было серьезно намерено развести меня на решение еще одной важной для их помойки задачки. Большая часть их штата джуно-мидлов занимается обвязками-прокладками-интерфейсами-тестированием, короче говоря, теми задачами, под которые можно нанять горсть рабов с улицы хоть прям щас — но эти люди в жизни не смогут выдать оригинального решения, а только будут ждать команд сверху.

Вишенка на тортике — под конец мне дали задачку с литкода, которая была будто специально подобрана так, чтобы быстрое решение требовало от меня знание специфичных фич стандартной либы, которое я им изначально честно заявил как «слабое». Те функции выучиваются наизусть за пару дней, а аналитическое мышление развивается годами, но нет «ты слабоват, мы можем тебя взять, но на ЗП в два раза меньше». Вот так вот: «не подскажешь, как пройти к вокзалу?... А теперь встань раком и вези меня туда».

Что мы всё про меня да про меня. С точки зрения массовой индустрии Дуглас Крокфорд — посредственный программист, и в недавнем треде большое число отписавшихся доходчиво пояснило, почему это так. Да, подумаешь, он создал какой-то там JSON, на котором работает половина индустрии, а еще создал JSLint, который ведь оказался так себе и был вытеснен ESLint-ом, и вообще «я могу сделать лучше, просто оно мне не надо». Но печальная истина в том, что тысячи смузихлебов писали на JS безо всякого линта, и, я уверен, при возникновении онного долго противились новой технологии. Проходит время, и вот уже каждый школьник считает своим долгом задействовать ESLint и JSON, а пишет, естественно, на ES2015, добрая половина фич которого была реализована при непосредственном участии Крокфорда (кстати, мало кто знает, что Object.keys/Object.values еще в ES5 было внесено по инициативе Крокфорда) — но этот школьник понятия не имеет, откуда взялись «мои любимые технологии».

Я хочу подчеркнуть, что это не одиночный пример мнения отдельной макаки — это закономерность, которую заметил не только я, и не только эту. Такие люди, как Крокфорд, могут бесконечно выдавать оригинальные идеи, но как исполнитель они так-себе, у них вечно шило в попе, толкающее на приключения, потенциально грозящие сорвать сдачу проекта (которая назначена на вчера, как обычно). Я задумался: а кому могут быть в самом деле нужны такие люди? Да, в силиконовой долине можно себе пригреть местечко — по этому пути успешно прошелся Крокфорд. А что делать, если я не хочу развивать силиконовую долину? Я в молодости отказался ехать туда, и сейчас не особо горю желанием (но и не предлагают уже). Вот такое вот я капризное животное.

Более того, если допустить, что Крокфорд выдал некое супер-пупер классное решение для вашей фирмы, то возникает проблема — кто его будет поддерживать/развивать? А также так называемый Bus factor — что делать, если Крокфорда убьют Крокфорд уйдет? Типовой сеньор-помидор, посмотрев на код Крокфорда, выпучит глаза и закричит «ты где такое видел? Кто так делает? У тебя своя голова на плечах есть?».

Всё ли так безнадежно, и есть ли более-менее прикладные задачи, которые не сможет решить сеньор-принципал-архитектор даже в обнимку с цистерной смузи, даже выдавая по два заученных решения литкода в секунду? А может быть и есть. Например, быстрой инкрементальной Agile Scrum Kanban Fast-shipping Test Driven методикой постепенной разработки невозможно реализовать распределенную отказоустойчивую БД со строгой согласованностью данных. Отказоустойчивость — это бинарное свойство, БД либо отказоустойчива, либо нет. Не бывает почти отказоустойчивой приблизительно распределенной БД которая чуть ли не сохраняет все подтвержденные транзакции (привет разработчикам MongoDB). Ну то есть она в таком случае не отказоустойчива и не дает гарантий.

Даже Clickhouse можно почти сделать при достаточном стратегическом запасе смузи (только для единственного хоста), но яндекс так и не осилил аналога ZooKeeper (кластер ClickHouse работает через ZooKeeper), поскольку никакое количество костылей, инкрементально разработанных в Яндексе ранее, так и не смогли заменить одного грамотно продуманного решения. Что мы по итогу видим сейчас? Вся инфраструктура Яндекса стоит на ZooKeeper, найди возможность положить ZooKeeper — весь Яндекс встанет колом. Тот же Facebook тоже полагается на ZooKeeper (хоть и меньше, они там саги любят). В Amazon вообще всё печально, и я не поверю, что с любым количеством денег Amazon способен создать аналог ZooKeeper, поскольку я читал статьи их отдела по исследованию распределенных систем, и уровень там совершенно никакущий. Достоверно мне известна ровно одна контора, способная разрабатывать распределенные СУБД с гарантиями согласованности — это Google. Она разработала самое первое подобное решение, Google Chubby, близкой копией которого позже стал ZooKeeper.

Но вот в чем проблема — ZooKeeper уже есть, а значит «ты нам не нужен». Что же еще требует глубокого вдумчивого погружения и нестандартной находчивости? Похожие требования есть у многопоточных приложений. Еще подобного рода мышление нужно при тяжелой глубокой отладке софтины, на отладку которой систематически забивали, предпочитая спринты и быстрые релизы. Правда, с распространением защищенных сред выполенния, вроде JVM, CLR, JS, и Python, неустранимая потребность в отладке сильно снизилось, потому что в крайнем случае можно просто перезапустить контейнер или иметь запасные контейнеры сразу. (Еще есть UI/UX, но про мертвых либо хорошо, либо ничего).

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

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

Парадокс в том, что смузи-мастеры чуть ли не поголовно мечтают быть творцами. Какой смысл этого стремления? «Хорошо там, где нас нет»? «Полчаса побунтовал - и фатит»? Прежде чем окончательно и бесповоротно решить встать на этот путь, посмотрите на настоящих успешных творцов (не путать с клоунами вроде меня или Илона Маска). Такие люди не заработают заоблачных денег, их не расхватывают на рынке труда, им не так просто устроиться на обычную должность, а даже если устроятся — умрут со скуки, попутно занимаясь ремонтом того, что не ломалось, таким образом выведя из строя какой-нибудь старый добрый сервис на Cobol или MUMPS, написанный в 70-х годах «настоящими программистами, настоящими, не то что новое поколение».

Показательно, что работодатели идут навстречу этому стремлению, мол «пишешь конфиги для CI/CD? Ну ты же архитектор теперь». Аналитический склад ума нельзя поменять за месяц, его нельзя быстро приобрести или положить на полку на период отпуска. Wannabe-творец-на-выходные в лучшем создаст популярный клон существующего софта — даже не потому, что не способен ни на что другое, а потому, что понимает, что сообщество не примет ни одной значимой инновации серьезнее плагина к Emacs или очередных скрипт-костылей для сборки C++. Да и то, плагины к Emacs не нужны, поскольку уже есть настоящее проверенное решение в виде Vim и его аналогов.

И я не могу упрекать работодателей (как правильно заметил Kogrom по ссылке выше): им нужна взаимозаменяемость и предсказуемость, им нужно снижение рисков и издержек; им нужен посредственный сайт, который будет создавать иллюзию наличия этого сайта у компании — а больше и не нужно; заказчикам нужна иллюзия масштабирования и отказоустойчивости, с бессмысленными невыполнимыми требованиями к системы — выдайте ему микросервисную архитектуру со стоимостью и временем разработки в 3 раза больше грамотного монолита, также бонусом дайте ценные инструкции по масштабированию бигдата-серверов монги сверх 500 ГБ (на случай, если его бигдата размещается в кластере из айфонов). Можно упрекать разве что себя (мне — себя, а вам — себя, не меня). Например, много лет назад я имел возможность выбрать семью и карьеру, но я выбрал то, что выбрал — не иметь власти, но знать всё и ничего одновременно. В этом есть свой кайф и неудобство одновременно.

 , , , опус,

byko3y
()

Прозрение Штульмана

Форум — Talks

Штульман повзрослел, стал на год взрослее.

А было вот что.

Я последний год внедрял в нашей конторке всякие штуки, то Proxmox вместо пиратской VMWare, то Let’Encript, то собственное облако, то мониторинг, то настаивал на необходимости оповещений о значительный отвалах сервиса, то продвигал идею обезличивания одной ИС, которая ела кучу денег на защиту, но при этом совершенно неоправданно.

Чем все кончилось.

Не далее чем вчера, зашел на наш main_router и добавил на него правило. Отвалилась консоль и интернет в офисе.

Ну что же, старшему коллеге объяснил, что мол добавлял сервис SNMP и хотел ограничить доступ к нему только локалкой. Добавил правило, указал порт, но не указал протокол, применил; после чего отпало управление и интернет в офисе. Все по честноку, это вообще мой принцип.

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

Через час после инцидента, мне позвонила босс: «ну что у нас?». Я сказал: «добавлял сервис SNMP и хотел ограничить доступ к нему только локалкой. Добавил правило, указал порт, но не указал протокол, применил; после чего отпало управление и интернет в офисе», что для босса прозвучало «ДАОШРвЫДШоарфыдвтфмдоывамтдошукфитфткмдфгшукмтгшдффжщукшпомтжкф, я все сломал»

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

Я перечислил ей другие случаи глобальных сбоев: «аттестованная сертифицированная контора разослала на випнеты наших клиентов пустой список IP координаторов, время полного восстановления 180 дней», «внедрили линукс, наш главный одинесник 2 недели доказывал что линукс глючный и не может как винда, при этом клиенты почти не могли работать, после выделения серверу необходимых ресурсов работа нормализовалась», «наш главный одинесник пил 3 месяца – данный опыт бесценен».

Никто не говорил о саботаже.

Да похоже даже в глазах коллег я всего лишь мальчик который носит трубку и соединяет с «Викой».

А какой у тебя был факап, после которого ты потерял всю репутацию?

PS. Да, в этот раз, похоже действительно пора увольняться.

 ,

Shulman
()

Переоценен ли K8S/Docker с некоммерческой точки зрения?

Форум — General

Привет всем,

Работаю с Docker/K8S еще с 2018 года. Примерно с того времени, все проекты как правило вертятся в рамках Kubernetes. Неважно как:

  • в виде managed-сервисов в облоках (GKE, AWS EKS)
  • в виде unmanaged на приватных bare-metal (через kubeadm)

Да, удобно. И прошу не закидывать данный сабж общими словами на тему:

  • Докер, это новый стандарт и удобный инструмент для сборки образов
  • что К8С удобен для быстрого поднятия сред и оркестрации приложений
  • что можно лимиты ставить, и решать проблемы зависимостей системных либ

Все это понятно, известно и излишнию маркетинговую рекламу делать не надо в данном сабже. Да, спасибо всем этим новыми технологиям, они в принципе дают з/п и формируют спрос/предложение на рынке.

Речь немного у другом. Я прочел недавно пост: https://lwn.net/Articles/676831/

И некоторые слова зацепили, как:

According to Walsh’s presentation, the root cause of the conflict is that the Docker daemon is designed to take over a lot of the functions that systemd also performs for Linux. These include initialization, service activation, security, and logging. «In a lot of ways Docker wants to be systemd,» he claimed. "It dreams of being systemd."

Сейчас, я выражу непопулярную точкую зрения :) и возможно, даже «мамонтовскую» :) но лезут такие мысли в голову:

  1. Докер действительно вызывает малость ощущения systemd-wanna be в опреденном аспекте, касаемо управления приложений (не берем аспект формирования образов)
  2. Формировать лимиты по RAM, CPU и др., вполне можно через тот же systemd
  3. Для проблемы эмуляции файловой ОС, совсем необяз. залезать в Docker, есть systemd nspawn и возможность дергать Linux namespaces напрямую
  4. честно говоря совсем банальная мысль :) а чем вам сама ОС не является крутым оркестратором для приложений?

Что мне лично еще не нравится при работе с Докером и К8С:

  1. Есть ощущения излишних слоев абстракций и user mode виртуализаций. С учетом того, что большинство приложений сидит на Java, Python, NodeJS … Спрашивается, а такая ли в этом необходимость? Куда ни шло, если речь про C++ проекты, где возня с headers/линковой либ и др., где действительно есть «головная боль» в ряде моментов… Но, на Жабке или Питоне-то? Сомнительно…

  2. Учет GAPов, если вы админите условный OpenStack с виртуалками и чудо-менеджер туда еще сует Докер, то создаются впечатления, что я занимаюсь больше обслуживанием абстракций, нежели реально проектом и реальной необходимости бизнесу

  3. Много какого-то ненормального хайпа вокруг этой облачно-контейтнерной тематики, и создается впечатление, что больше хайп ради хайпа. И менеджеры… Просто устраивают некий шоубизнес в IT на данной теме (сугубо личное мнение :) )

  4. Народ, как будто бы, разучился работать со stateful-сервисами и понимать проблематику больших баз и пр. Появилось много хомячков, кто трындит про A/B, удобное перекидывание контейнеров между нодами, но очень забавно было наблюдать :) как условные хомячки пытаются юзать Postgres в рамках контейнеров, а под капотом юзать Ceph (да еще в добавок на вирт. машинах), а потом удивляться, что кластер РСУБД не может быстро работать :) Уйму слоев виртуализаций построили, хранилища - дистрибутивные, проблему синхронизаций stateful-сервисов не решают, IOPS падает :) но зато «в облачке и поды по нодам». Понятно, что в облаках накинули 1000 баксов, и проблемы производительности могут улетучатся, ну или вообще увести базы в отдельные managed-сервисы. Но, очень забавляют картины, когда пытаются решать вопросы high load на приватных серверах через призму огромного слоя виртуализаций.

P.S. повторюсь, что сказал в начале. Спасибо Докеру и К8С за работу/деньги. Но, персонально есть ощущения какой-то лабуды. Как по мне, вполне себе можно было бы даже в условном systemd вращать многие приложения без огромной прослойки виртуализаций. Иногда кажется, что лучше быть не хайповым и вне моды.

 , , , ,

twinpeaks
()

Принимаю пари

Форум — Talks

Товарищи dk- и Oberstserj заключили пари на тему будущего поставок газа из России. Через 10 (десять) лет. За базу взяты текущие показатели.

Позиция dk-:

вангую рост минимум в 1,5. И точно не падение.

500 000 ₽ (комментарий)

Позиция Oberstserj:

считать будем именно объем газа поставленного с территории РФ за кардон. Я ж собственно поэтому поводу спор затевал. Вангую падение не мене, чем в 2 раза.

500 000 ₽ (комментарий)

На кону:
Коньяк 50 лет. Франция. Бутылка. Из приличного магазина. До 0,5-1к евро.

Товарищи обменялись контактами в почте и желают друг другу долголетия и трезвой памяти.

- - -

Товарищи dk- и greenman заключили пари на тему курса USD/RUR по итогу 2018 года.

Позиция dk-:

на 01.01.2019 рубль, если и ослабнет, то не более чем на 10% относительно показателя 01.12.2017.

Не только китайские коррупционеры (комментарий)

Позиция greenman:

[ослабнет ] более, чем на 10% к курсу на 01 декабря 2017. Курс рубля РФ к доллару США.

Не только китайские коррупционеры (комментарий)

На кону:
Бутылка стоимостью до 2 000 рублей (в ценах на сегодня), по выбору победителя.

Товарищи обмениваются контактами в почте и желают друг другу долголетия и трезвой памяти.

 

dk-
()

Сайты знакомств и назначение свиданий

Форум — Talks

Вроде говорили про какой-то сервис, где можно заплатить, а на сайтах знакомств будут все общение на сайте за тебя делать и назначать свидание ориентируюсь на твой график, а дальше ты сам. Есть такое в России? - бюджет до 6 тысяч рублей в месяц, на такую ерунду.
Ну и подскажите адекватных сайтов знакомств, где много людей и они активные, ну и можно сразу напрямую писать и т.д.

P.S.: Тред стоит перенести в клуб. Ну и я уже не рад что спросил, думал подскажут, что мол есть такой-то сайт стоит столько-то...

 ,

anonymous_sama
()

Расчёт зависимостей ebuild-ов на GPU

Форум — Talks

Говорят, что нет большой разницы между paludis и portage по производительности, потому что алгоритмическая сложность задачи высока сама-по-себе, и переход с питона на C++ почти ничего не даёт.

Знаачит, надо переходить с CPU на GPU. Там много процессоров, вот пусть они зависимости и считают.

Интересные ссылки из связанных топиков:
2017-08-18, Реклама https://github.com/gunrock/gunrock
2015-09-25, где алгоритм? - где-то там
2014-10-28, Оценка влияния количества ebuild-ов в дереве на скорость выполнения emerge
2013-11-09, Идея считать на GPU
2013-07-05, про визуализацию зависимостей
2013-02-28, в squashfs запаковать или в базу sqlite, eix

Если бы не расчёт зависимостей у портежа, гента была бы самым фичастым и стабильным дистрибутивом.

- (q) vurdalak

 , ,

Einstok_Fair
()

React.js / Redux/ React-router - бесплатные книги на русском

Форум — Web-development

Добрый день, посмотрел, что есть некоторая активность в ветке web-dev, и в частности в теме про обсуждение трендов.

Реакт, точно в тренде) Да и как по мне, он просто удобен, так как позволяет любой старый проект переделывать буквально по странице. Выгодно и работодателю, и программисту, который его поддерживает.

В связи с этим, хочу поделиться небольшими книгами-туториалами по реакту на русском.

Порядок изучения следующий:

React. Redux. React-router.

P.S. надеюсь, правила форума я не нарушил. Все книги бесплатные, и можно состряпать PDF/ePub/Mobi

 , , ,

maxfarseer
()

Android, зонды, безопасность, СПО, паранойя

Форум — Mobile

Disclaimer1: Проблема с данным маном в том, что местной аудитории, например, плевать на ведроид, а тому же 4pda наплевать на фанатичный СПО и избавление от зондов. Рискнем и запостим здесь.

Disclaimer2: Все описанное является суммой наклопленного мной опыта вперемешку с моим личным мнением. Пишите комменты, будем улучшать-дополнять-чинить

Уровень прошивки

Практически все стоковые прошивки на сегодняшний день идут с gapps (Google Apps). Что же это за зверь:

  • Любое приложение (даже не требуещее никаких прав) может с ним общаться.
  • Gapps имеют доступ к сети.
  • Gapps позволяют Google в любой момент установить/удалить с вашего телефона любое приложение.
  • Gapps постоянно держат открытое сетевое соединение с серверами гугла (для нужд push-нотификаций).
  • Gapps — нереальное огромное количество кода. Стоковый образ (если верить opengapps) будет весить около 700Мб.

ААААА, как это удолить этот рассадник потенциальных уязвимостей и жора батарейки?

Сложный вопрос, на самом деле. Есть три варианта действий:

  • Новый и простой, и профитный способ. Появилась прошивка «LingeageOS for microG». Если ваше устройство поддерживает её, просто ставьте её и наслаждайтесь. Fdroid+MicroG+пуши+signature spoofing+unlp+OTA-обновления из коробки
  • Самый простой способ. Если ваш андроид достаточно старый (на достаточно новом не удастся отключить самый главный компонент gapps), из Настройки->Приложения отключите все, связанное с Google (особенно, Google Service Frameworks):
    • root не требуется;
    • push-уведомления работать не будут;
    • на устройстве останется огромная и потенциальная куча гугловского дерьма, хоть и менее активная.
  • Способ посложнее. Накатываем root и вручную удаляем все пакеты и библиотеки, требуемые гуглу:
    • требуется root и разблокировка загрузчика;
    • минимальное количество зондов без смены прошивку на полностью опенсорсную;
    • увы, в последних версиях андроида вам, скорее всего, придется оставить несколько пакетов (вроде GoogleSetupWizard), иначе система не загрузится.
  • Самый профитный способ. Ставим альтернативную прошивку (или мотаем до следующей секции и покупаем устройство с пгавославной прошивкой без зондов из коробки). Наслаждаемся.
    • Требуется root, разблокировка загрузчика, шаманство и местами смена устройства.

Я тут начал наслаждаться, но вдруг понадобились пуши, да и Uber требует зонды. Что делать?

Вдоль

Попробовать поставить MicroG, свободную реализацию клиентской части гуглозондов. Самая больная часть: помимо собственно MicroG вам нужно будет запилить себе Signature Spoofing. Коротко говоря, это обход защитного механизма, не позволяющего прикидываться gapps'ами кому попало. Для этого необходимо либо патчить прошивку при помощи Xposed/Needle/Haystack, либо использовать совместимую прошивку (смотрите список, по ссылке, их стало очень много). Все подробности по той ссылке.

MicroG позволяет завести пуши, сервисы геолокации (со множеством бекендов, ищите nlp location backend в f-droid) и большое количество софта (когда я в последний раз тыкал, работали даже покемоны).

Уровень софта

Без гуглозондов жить есть!

https://f-droid.org/ — каталог с опенсорсным софтом.

Предлагаю вам следующий список приложений, способный заменить типичный набор проприетари из типичной вендорской прошивки. Аналогичный список: https://github.com/Datenschutz/awesome-FOSS-apps

  • Yalp store. Позволяет ставить приложения из Google Play (да, иногда это все-таки нужно), в том числе через общий аккаунт. Не требует зондов.
    • Позволяет так же выкачивать купленные приложения (но не факт, что они заработают: они при работе могут проверять лиценизию через gapps, возможно, тут может помочь microg).
    • Альтернативно, воспользуйтесь моим решением для выкачивания софта прямо в свой репозиторий f-droid.
  • K-9 Mail. Почтовый клиент.
  • DAVDroid. Синхронизация контактов с owncloud/nextcloud.
  • Gadgetbridge. Синхронизация с умными часами и браслетами (pebble, mi band и некоторые другие)
  • NewPipe. Клиент для YouTube. Умеет воспроизводить видео в фоновом режиме как музыку, загружать файлы.
  • Odyssey. Просто материальный музыкальный плеер, но в последнее время очень нужный, т.к. вендоры повадились заменять в прошивке плеер на Google Music.
  • Набор простых и красивых затычек для различных приложений — simple mobile tools.
  • Файрволл AFWall+ файрволл (имеет Xposed модуль для расширения возможностей)
  • Amplify Battery Extender.
  • DNS66.
  • KDE Connect.
  • OpenKeychain.
  • OpenVPN FOSS.
  • Картография и навигация: Maps.Me (приз симпатий от комментаторов), OsmAnd (приз глюкалова от меня, но щито поделать).
  • Список стал очень жирным. Пока новые элементы не добавляю, думаю над критериями включения в него софта.

Если вы будете ставить проприетарный софт, помните о следующем:

  • Желательно зайти в настройки приложения и вручную запретить доступ ко всем ненужным разрешениям, дабы не промахнуться в нужный момент.
  • Отключите приложению фоновый доступ к сети (если у вас свежий Android) или вообще доступ к сети (если у вас стоит файрволл).
  • Малвари вроде «Сбербанк Онлайн» вообще лучше создать отдельный аккаунт на телефоне.
  • Яндексовским приложениям нельзя давать доступ к местоположению. Вообще никаким — все сливают.
  • Проприетарь может читать названия аккаунтов, даже не принадлежащих ей. Называйте их максимально обще, т.е. вместо «sportloto@syncserver.com» делайте «contacts sync».

Права суперпользователя

Читая васянский 4pda вы часто можете увидеть «ну и накатываем SuperSU.zip». Не делайте этого. Есть прекрасный опенсорсный superuser, совместимый со свежими ведроидами. Нужно лишь поставить zip (используйте beta на android >=6) и apk.

Если ваша прошивка основана на LineageOS, то все еще проще. Где-то рядом с загрузками в директории extra должен валяться zip, включающий встроенные и интегрированные в прошивку права суперпользователя. Профит.

XPosed

XPosed — опенсорсный фреймворк для низкоуровневых хаков.

  • Не доступен для свежих андроидов.
  • Позволяет заставить не увидеть root всякие «Сбербанки Онлайн».
  • Имеет кучу некрофильских и неопенсорсных модулей. Осторожнее.
  • Легким движением руки может окирпичить прошивку.
  • Полезные модули:
    • PlayPermissionsExposed
    • YouTubeAdAway (но все-таки советую использовать NewPipe, LightTube, WebTube, SkyTube или MiniTube. Тысячи их!)
    • XPrivacy — по своей сути это «песочница» для любого, даже системного, ПО. Xprivacy применяет правила ко всему ПО. Эти правила можно создавать самому или качать готовые. То есть, к примеру, если установлено нечто местами полезное, но попутно показывающее свою рекламу, Xprivacy можно просто запретить этому ПО доступ в сеть. Или если очередная косынка хочет интернет, список контактов, доступ к микрофону и камере, то с Xprivacy это легко и просто запрещается конкретно этой гадости и она даже будет при этом работать не имея доступа к тому, что ей будет запрещено.

Уровень устройства

Тут тоже всё плохо. Выбор:

  • Рандомный флагман с хорошей поддержкой LineageOS (CyanogenMod). Поддержка, вероятно, будет хорошей, секьюрити-апдейты будут приходить долго (например, для htc desire hd цианоген обновлялся до самого конца — декабря 2016 года), но вот версия андроида, скорее всего, застрянет. Обычно дорого. Можно искать по списку официально поддерживаемых линейкой устройств.
  • OneplusOne / Wileyfox Swift 1. Поставлялись с CyanogenOS, имеют хорошее коммьюнити разработчиков, будут долго обновляться в софтовой части. В железной — все плохо. 1+1 уже довольно старый и хорошие запчасти купить сложно. Wileyfox изначально имел несколько проблем, в т.ч. слабенькую батарейку. Компенсируется ценой, местами можно найти новое в продаже. Довольно бюджетно.
  • Fairphone 2. Очень дорого, очень хорошо. Но это в теории, как там на практике — хз, не пользовался, отпишитесь.
  • Рандомный телефон с официальным портом los. Сойдет, главное, чтобы фатальных багов в порте не было. Долгой жизни порта не ждите.
  • Рандомный телефон с васянским los. Совсем плохо, но если телефон уже куплен, ничего не поделать.
  • Рандомный телефон с васянским ведроидом, основанным на стоковой прошивке / без исходников / проч. Лучше такое не ставить, а подготовить прошивку самостоятельно, смотрите выше и ниже.

Следует также заметить, что:

  • Существует несколько устройств с CyanogenOS, без доступной Cyanogenmod. В комплекте идут сервисы microsoft, gapps и много разной другой блотвари. Исходники обычно зажабены. Пример устройств: Wileyfox Spark, Wileyfox Swift 2(|+|x).
  • Выбирая устройство, так же загляните на его страничку на 4pda. Ресурс хоть и васянский, но очень полезный: можно увидеть список доступных прошивок, FAQ по типичным проблемом, список самых вероятных заводских проблем (которые можно проверить еще перед покупкой).

Уровень физической безопасности

Для чего нужна физическая безопасность:

Допустим, ваш девайс попал в руки злоумышленнику.

  • Во-первых, вы хотите, чтобы он не имел никакой возможности прочитать важные файлы с вашего телефона (кейз ФБ-1).
  • Во-вторых, вы хотите узнать, не добавил ли он кейлоггеров в ваш загрузчик (кейз ФБ-2).

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

Я бы на вашем месте на это не рассчитывал.

  • Аппаратные защиты часто не надежны и опираются на принципах безопасности через неясность, в них переодически находят уязвимости
  • На прекрасных, казалось бы, телефонах Xiaomi вы не сможете разблокировать загрузчик, если с Xiaomi что-либо случится: разблокировка производится с участием интернета при помощи (работающей только под Windows) программы, требующей их аккаунта и доступа к интернету. У HTC похожая ситуация, но в несколько более мягких условиях.
    • Скорее всего, это доставит неудобств именно вам, а не злоумышленнику
  • Всякие проприетарные системы полнодискового шифрования тоже не выдерживают проверок специалистами.

Выводы:

  • Для хранения ваших секретных файлов в безопасности от ФБ-1 используйте, к примеру, Secrecy.
  • «Таблеток» от ФБ-2 на сегодняшний день нет. Промбируйте телефон при помощи скотча и волос и не расставайтесь с ним.
  • Лучше все-таки не хранить никакие важные данные на телефоне.

Модули сотовой связи

В каждом мобильном телефоне, почти каждом планшете есть GSM-модуль мобильной связи. Это —

  • Фактически отдельное устройство, обычно имеющее максимальный доступ к процессору, памяти и переферии. Зачем это делают — черт знает. Возможны исключения, нужно уточнять в каждом отдельном случае.
  • Идентифиционный модуль, который постоянно разговаривает с воздухом.
  • Куча проприетарного кода, который никто не анализировал. В тех немногих случаях, когда анализировали — находили кучу всего интересного.
  • Работает это все на протоколах, местами разработанные в 80-х годах.

Так что тут все настолько плохо, что я даже предложить ничего не могу. Страдайте.

Вроде, все, что хотел сказать. Выдыхаю

 , , , ,

derlafff
()

Покидайте vimrc :3

Форум — Development

Vimrc-porn тип

 

marataziat
()

Вот и я завел свой трактор.

Форум — Talks

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

PS Для особо ретивых и одаренных модераторов - линукс тут при том, что я линуксоадмин.

 , , , ,

alexnorton
()

Латвия: история успеха

Форум — Talks

Привет, лоровцы. Меня попросили поделиться историей успеха, вот делюсь.

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

Работу я искал довольно долго. По грубым оценкам - полтора года. Как окончил магистратуру, решил, что в аспирантуру не пойду (слишком сложно). Но это не были поиски 24/7 в течение полутора лет. Совмещая с постоянной работой и периодическими отпусками (с зарубежными поездками) я кидал резюме во все сайты/почтовые адреса, где хоть немного находил что-то интересное. Процентов 90 резюме или не читались, или отправлялись в шрёдер (наверное). Из оставшихся 10 - приглашали на собеседование, чаще всего удалённое, один раз приглашали приехать). И не было особых предпочтений, куда направить трактор. Латвия как-то случайно сюда попала.

Устроился Scala-разработчиком в компанию, делающую и поддерживающую живое казино. Пока испытательный срок не закончился (3 месяца), прочувствовать особо не успел, но в целом работа нравится. Хотя есть и минусы в сравнении с предыдущей работой (больше бюрократии в основном), но можно закрыть глаза. Собственно, с самого начала я искал работу именно в Scala, изредка отзываясь на что-то другое, иногда даже проходя собеседования, чтобы потом либо я отказался, либо мне отказали. Вывод: в Scala работу найти всё же можно, хоть и нереально трудно.

По приезду оформили голубую карту. Процесс переезда был довольно долгим. С бюрократией немного помогали местные HR - говорили, с какими бумагами и куда идти.

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

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

Потом надо было ехать в посольство в Москву. Минус день, включая дорогу туда и обратно, все документы сданы, осталось ждать ответа. Ответ приходит по электронной почте (письмо на латышском, перевода нет, гуглотранслейт не работает, так как отсканированный pdf, а не текст, только если вручную переводить). Девочка из HR подсказала, что ответ положительный. После него поехали в Латвию. Вообще для въезда нужна шенгенская виза - нам повезло, у нас обоих с супругой она уже была.

После въезда где-то через 4 дня сделали голубую карту, на пятый пошёл на работу. Раньше нельзя было - не пускали. Законы ценят и соблюдают.

Плюсы: + На русском говорят почти везде. Где не говорят, поймут на английском. Кстати, если выпендриться и поздороваться с кем-то на лытышском, разговор продолжится именно на нём, что сильно усложнит понимание :) так что лучше так не делать, а сразу говорить на русском.

+ Латышский язык не выглядит чем-то сложным. Только мотивация учить его куда-то пропала после въезда в страну. А вообще надо. Субъективно он мне кажется проще немецкого или даже английского для русскоговорящего.

+ Стоимость жизни хоть и выше, чем в России, сравнивая даже с Москвой (и весьма ощутимо), но вполне разумная. Есть с чем сравнить (с той же Германией и Австрией).

+ Нет толп людей, толкучки, длинных очередей, пробок. Все бумаги в местном аналоге УФМС приняли очень быстро, без предварительной записи в тот же день.

+ Очень чистый воздух. И вообще очень чисто и аккуратно.

+ Город маленький, можно и нужно ходить пешком. Я так вообще поселился в 10 минутах ходьбы от места работы.

Минусы: - Медицина платная и грабительская. Причём по ходу платная она даже для местных, просто все покупают страховку (может, государство оплачивает часть?). Компания предоставляет страховку, но только после испытательного срока, а 3 месяца жить без страховки предлагает - круто. Даже не было рекомендации купить самому. Даже ни разу не заболев нужно было пройти некоторых врачей + сделать флюру - отняло > 100€, всё возместила компания, но цены дикие же. Про качество медицины пока судить не могу, надеюсь, и не придётся.

- Банки тоже грабят своих клиентов. Каждый чих стоит денег. Причём, я так понял, это касается всех банков, не только самых крупных - рыночная ситуация такая. Зато надёжнее, чем в Эрафии. Наверное? Проценты по депозитам несерьёзные - есть подозрение, что скоро их и вовсе сделают отрицательными.

- Связь тоже дорогая, что мобильная, что интернет. Но вроде качество хорошее. 4G вот тут есть (хотя мой телефон всё равно в него не умеет).

- Хоть на русском поймут, камнями кидать не будут, без латышского всё же тяжко. Надписи все на латышском, на улицах, на домах, на объявлениях, на ценниках в магазинах. Уметь читать по-латышски полезнее и важнее, чем говорить.

Линукс тут при том, что работаю под ним, в нём scala+sbt+maven+idea+git и куча всего.

Пока всё, что в голову пришло - вы спрашивайте, если что. Может на что-то сразу не смогу ответить, но смогу потом, когда дольше поживу и узнаю.

 , , , ,

BattleCoder
()

Скажите, я правильно вообще делаю?

Форум — Web-development

Погружаюсь в AngularJS. Не спрашивайте, почему, но в 1.2 (максимальная кросс-платформенность и минимальное отъедание памяти), никаких jQuery...
использую bootstrap.ui, пагинацию из него.

Пагинация прекрасна и быстра, вот только если посетитель с 99-й страницы перейдёт куда-либо, а потом вернётся, или сохранит в закладки, его UX превратится в тыкву страница снова станет первой.

Не проблема, я нагуглил, что надо использовать $location.path
Но тогда перезагружается страница, и смысл теряется.

Хорошо, в router-ng ставим reloadOnSearch: false

... опять UX превратится в тыкву - если посетитель нажмёт на пункт меню, приведший его на эту пагинацию, он не сработает.

Нашёл воркэраунд - в роутинге писать:

    $routeProvider.when('/bottles/:xxxxx', {
        templateUrl : '/templates/ng/bottles.jade',
        reloadOnSearch: true
    });

    $routeProvider.when('/bottles', {
        templateUrl : '/templates/ng/bottles.jade',
        reloadOnSearch: false
    });


Так я это о чём... Это мне одному вот это вот всё жидкое и густое вперемешку не нравится в этом вашем JavaScript? А остальным и так нормально, и они считают это мощным и немногословным инструментом, или я просто не там копаюсь?

Сейчас иногда на wxPython что-то делаю, так там по сравнению с UI в браузере просто какой-то прекрасный мир идеальных вещей.

 , ,

Shadow
()

Приличный шрифт

Форум — Desktop

Здравствуйте.
Ребята, хочу подобрать приличный, моноширинный, векторный, кириллический шрифт для консоли ну и код писать. Какой шрифт можете порекомендовать? И где его взять (пакет в репозитории или с какой-то «помойки» дёргать)? Пока сделал следующее:

 $ fc-list ':lang=ru' | grep -iv '\.pcf' | grep -i 'mono'
/usr/share/fonts/liberation-fonts/LiberationMono-Regular.ttf: Liberation Mono:style=Regular
/usr/share/fonts/liberation-fonts/LiberationMono-BoldItalic.ttf: Liberation Mono:style=Bold Italic
/usr/share/fonts/liberation-fonts/LiberationMono-Bold.ttf: Liberation Mono:style=Bold
/usr/share/fonts/liberation-fonts/LiberationMono-Italic.ttf: Liberation Mono:style=Italic
Из этого набор самым приличным показался 'Liberation Mono:style=Bold'. Никаких дополнительных шрифтов не ставил, стандартная комплектация x servera.
ЗЫ: интересует отрисовка на стороне х клиента. Допускаю, что ищу шрифты как-то криво, только разбираюсь в вопросе. Не смогу отвечать оперативно.

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

 ,

pavlick
()

Разминка для глаз

Форум — Talks

Был у офтальмолога сегодня, думал очки или линзы поставить, т.к. вечером после работы не могу смотреть на дальные объекты, все очень размыто. Врач сказал, мол очки тебе не нужны, а нужны упражнения для глаз от т.н. «компьютерной» болезни.

Есть ли софтины какие-то для того, чтобы периодически подсказывало мне, что пора бы размять глаза? Или же пилить desktop notifications по крону?

Заодно может и подскажет кто упражнения эффективные?

 ,

Amet13
()

Любопытство

Галерея — Скриншоты

Давече пересадил свой стационарник на WiFi, для чего был куплен соответствующий адаптер (TPLink WDN-4800). Поскольку мой текущий аплинк не дотягивает даже до сотки, то вечно упираюсь в потолок 7-8 МБайт/сек. Но любопытство взяло верх и подключил в своему микротику ноут по сети в гигабитный слот. На скрине резултат.

Собственно, причина этого скриншота - задать всезнающему all такой вопрос: а какого рожна скорость по воздуху так сильно пляшет? проверил wifi analizer'ом - на моем канале никого. видимость прямая, не более 4 метров. т.е. среда идеальная, однако на деле видим вот такую картину. причем, на картинке запечатлен еще вполне ровный результат. скорость иногда опускалась до нескольких мегабит, потом снова вверх.

Потом сделал другой эксперимент... стационарник обратно на провод, в тот самый гигабитный порт, а ноут по вайфаю. В этом случае скорость была 5-7Мбайт/сек.

Сижу вот теперь, гипотезы строю.

>>> Просмотр (1920x1080, 315 Kb)

 , ,

Deleted
()

Как делать ajax интерфейсы без единого обновления

Форум — Web-development

Лор, я не понимаю, у меня выходит костылестроение, я пытаюсь писать интерфейсы без единого разрыва обновления страницы.

У меня в голове не укладывается правильное понимание аякса, я пытаюсь писать форму которая вызывает другую форму а в ней ещё одна форма.

Ну и естественно попадаю в ситуации типа надо вызывать JS а он естественно не вызывается тк это блок в блоке вызванный скриптом с главной и приходится извращаться типа:

<img style="display: none;" src="empty.gif" onload="setTimeout(function() {window.location.href = '/';}, 1500);" />

это же в корне неверно! как научиться? или я всё правильно делаю а не знаю реализации? что читать? куда писать?

 , , ,

VictimOfLoveToLinux
()

Как осилить Vim?

Форум — Talks

Уже 5 лет на генте, пишу на сях, работаю в эмбеде.
По статусу пора уходить от гуёв в голую консоль и если на тайловые wm таки пересел, то с IDE все сложнее.

Я НЕ МОГУ ОСИЛИТЬ VIM

Что можно сделать в тяжелой ситуации жесткой зависимости от удобства и искаробочности, чтобы искоренить в себе мальчика и стать настоящим бородатым кулхацкером?
Делитесь историями успеха, как вы начинали пользоваться vim после полноценных IDE и пилили его?

 , , , ,

mersinvald
()

Мужики, объясните по React.js!

Форум — Web-development

Всем доброго времени суток!

В последнее время я все чаще стал натыкаться на статьи, посвященные библиотеке React.js, которая реализует слой view для веб-приложений. говорят, что этот самый реакт быстр как сатана (в хорошем смысле) :). Но я, будучи незнакомым с внутренним устройством реакта, засомневался, как может какая-то высокоуровневая обертака над DOM (а точнее над виртуальным дом'ом) работать быстрее, чем, скажем, шаблонизатор в underscore, который «ворочает» непосредственно _реальный_ DOM?

Вопрос, какой код будет рабоать быстрее (объективно), который манипулирует реальным домом или аналогичный код, который сначала манипулирует виртуальным, а затем уже встраивается в реальный DOM?

Заранее спасибо.

 , ,

KernelPanic
()

Темы для Fluxbox

Форум — Talks

Хорошие темы для Fluxbox http://tenr.de/styles/

 ,

Odalist
()