OK, принимается, формально поддержка Samba есть. Но сделано как всегда через ***. Unix way опять не соблюдается и нет прозрачного доступа к сетевым файлам (только изнутри Ghost Commander, как я понимаю).
Но есть BusyBox.
Т.е. самый ограниченный шелл и набор утилит из возможных, уместный например на встраиваемых системах и для экстренной поддержки, но не как удобный повседневный рабочий инструмент.
Попробуйте Termux, там можно установить стандартный клиент Git (на смартфоне я не пользовалась, возможно есть какие-то ограничения).
Хм, интересно, судя по возможностям похоже это chroot c обычным arm линуксом и туда вообще можно много чего поставить. Прекрасная иллюстрация к моей критике выше — чтобы сделать из LineageOS нормальную ОС, приходится всё-таки тащить на него GNU сторонними средствами.
Какой браузер используете?
То, что шло в стоковой поставке, т.е. встроенный браузер (не знаю как называется) и Chromium.
Пользуюсь LineageOS (Galaxy Tab P5100, стандартная сборка espresso3g, без gapps) по тем же соображениям открытости/приватности. По сравнению с десктопным Linux — более беспомощной ОС не встречал ещё. К андроиду эти слова тоже относятся, только в меньшей мере (тк есть платные приложения, решающие часть проблем ниже)
Нет клиентов для NFS и Samba. В итоге на домашнем сервере куча медиафайлов, книг итд, но нет средств открыть их по сети, приходится как в каменном веке копировать файлы на планшет по ftp/ssh или через карту памяти. Хорошо хоть DLNA есть. Справедливости ради, SMB клиенты видел в гугл-плей для андроида, но свободных не встречал. Ирония ещё и в том, что NFS поддерживается ядром линукса, но из всех стоковых ядер Linux под Android/AOSP/..., известных мне, она выкинута.
Полностью изменена традиционная структура rootfs и системных утилит, потребуется настроить что-то системное (например автозапуск) — если не обладаете знаниями по системному устройству android и знаете только обычные юниксы, то будете долго выяснять, как это делается в LineageOS/android. Для интереса попробуйте запустить (и настроить автозапуск) встроенный в lineageOS SSH сервер — у меня лично не один день это заняло.
Полностью сломано традиционное управление аккаунтами. Есть встроенный дефолтный пользователь (виден, если зайти в терминал) u0_a72, как переименовать/контролировать его — совершенно неясно, как этот u0_a72 соотносится с именем и данными пользователя, отображаемыми в обычном GUI андроида — тоже неясно. Вероятно, это не общесистемный юзер, а просто произвольный юзернейм в приложении. Useradd, usermod — забудьте.
Нет привычной по юниксам экосистемы приложений (coreutils итд) — Google предпочёл создать VM Dalvik и свою собственную экосистему приложений вместо хотя бы портирования coreutils под андроид, не говоря уже о нативном портировании (что соответствовало бы unix way).
В продолжение темы приложений: Я бы ещё смирился, если бы LineageOS предлагал качественные аналоги для типовых утилит под десктопные ОС, но во многих случаях качество этих мобильных аналогов ниже плинтуса. Возьмём Git клиент. Что у нас там предлагает F-droid? SGit/MGit. Ни один из этих замечательных клиентов не имеет консольного интерфейса, не умеет клонировать из локального репозитория или по нестандартному порту SSH. Оба они в принципе умеют только то, что умеют их GUI, то есть весьма немного. Таск-трекер (SyncOrg) вылетает при клике на "добавить", баг висит в трекере, чинить никто не собирается. И т.д., перечислять можно долго.
Далеко не все видеокодеки есть, отсутствие кодека — неразрешимая проблема, непонятно что делать, видимо методом тыка пробовать разные медиаплееры. Довольно неожиданно для тех, кто привык, что в настольных ОС уже давно есть решение в 1 клик (Windows = K-Lite codec pack, *nix — паки gst-plugins-*).
Нет возможности подключить планшет в режиме USB mass storage. Нет и всё.
ТОРМОЗИТ. Даже рендер/прокрутка простейшей статической html страницы в браузере или переключение между приложениями. Всё очень очень медленное. Софта у меня по минимуму, никаких "оптимизаторов", ничего. Я раньше думал, что проблема в устаревшем железе (Galaxy Tab P5100), пока: 1) не увидел у другого человека тормоза UI андроида на флагманском железе (Galaxy A7); 2) поработал на десктопном дистрибутиве на Banana Pi со схожим SoC (Cortex A73) — не формула-1, конечно, но такого позора как тормоза на plain text/plain html/pdfке не наблюдал.
Встроенный почтовый клиент (приложение Mail) требует доступ к телефонной книге, и отказывается (!) запускаться при запрете этого доступа. У меня смутное ощущение, что я где-то уже встречал такой подход...
Короче как только найду время — покурю руководства по запуску нативного Debian на Galaxy Tab, тк даже со всеми проблемами, ожидающими при портировании линукса на ARM планшеты, это всё равно походу лучше lineageos/android.
Выравнивание групп нодов традиционно делается через объявление подграфов, +можно добавить ещё фиктивных нодов-точек и вручную управлять их раскладкой. Хотя да, это избыток ручных настроек и я не знаю как с ним бороться.
Вот корректный граф:
gv
digraph G {
splines=ortho
node[shape=rect]
edge[arrowhead=none]
{
rank=same
n1 [label="Иванов Иван Иванович"]
n1n2 [label="", shape = point]
n2 [label="Иванова Анна Николаевна"]
n1->n1n2->n2
}
n3n4n5 [label="", shape = point]
{
rank=same
n3 [label="Иванов Михаил Иванович"]
n4 [label="Иванов Константин Иванович"]
n5 [label="Иванов Алексей Иванович"]
}
n3n4n5->{n3 n4 n5}
n1n2->n3n4n5
}
Да, при splines=ortho «из коробки» стрелки из родителей выглядят некрасиво/неодинаково, не знаю с чем это связано, при других значениях spline всё выглядит более однородно. Хак в данном случае — направить рёбра n1->n1n2->n2 вместо n1->n1n2<-n2
По поводу Graphviz: покажите плз пример данных, который он отрисовал некорректно? (желательно в *.dot) В графвиз куча различных настроек, приёмов и движков для отрисовки, часто основной сложностью становится выбор нужных параметров. Graphviz это индустриальный стандарт в визуализации графов, я крайне рекомендую не выкидывать его из списка кандидатов. Кроме того вы пользуетесь Viz.js, а не самим Graphviz. Судя по описанию проекта, это сборка на Emscripten обычного графвиза, так что поведение у Viz.js и Graphviz теоретически д.б. одинаковое, но я бы перестраховался и попробовал отрисовать все проблемные графы в традиционном Graphviz.
(...)
The name 'tasklet' is misleading: they have nothing to do with 'tasks', and probably more to do with some bad vodka Alexey Kuznetsov had at the time.
Во-первых, вы должны абсолютно доверять clang-format и молчаливо считать, что его переформатирование абсолютно всегда правильно (готовы это гарантировать? Вообще для любого кода?) Во-вторых, бывают случаи, когда нарушение стиля кода — вынужденная мера. В вашем же случае автор коммита даже не узнает про то, что его код был переформатирован.
Более корректное решение: Hook должен отклонять неподходящий коммит. После чего происходит 1 из 2 вещей: а) автор переформатирует код clang-овским или любым другим тулом и отправляет повторно (он также может заранее попытаться реализовать автоформатирование на своей стороне): б) автор доказывает необходимость ошибки форматирования, и коммит разрешается в административном порядке.
Во-первых, оба домена в примере могли быть вымышленными, так что гарантированно в рамках задачи это не проверить.
Во-вторых, если цель этого примера — сказать «проверяйте домен», то непонятно, почему в ответе про это ни слова, а говорится только про опасность вирусов в PDF.
Upd: Подсказки в заголовке не в счёт (в некоторых других вопросах заголовки кстати давали намеренно вводящую в заблуждение подсказку).
Разница там была только в домене верхнего уровня, edu вместо org, ЕМНИП. Вполне нормальная ситуация для сайта школы, он мб на .edu и .org. Это действительно очень кривой вопрос (и я тоже дал неверный, по мнению гугла, ответ).
Пример с финансовым отчётом 2018 в PDF как пример фишинга — некорректный. Единственным объяснением, почему это фишинг, значится «PDF могут содержать вирусы». По логике авторов опроса, нельзя открывать вообще никакой приложенный PDF.
My bad, I missed the «translation» tag. This topic has a (pretty old) Russian original counterpart and I now remember commenting on it earlier.
A business idea for TM: autogenerate automated Russian->English translation for all the past articles. English speakers should feel the same pain as us readers of Aliexpress automated translations.
1. What is the point of creating a topic in English as a follow-up for a topic in Russian? The OP is a native Russian speaker, and you are, and most of the expected commenters are. Nevertheless we are forced to communicate in English here. I feel like I found myself in an asylum.
2. You are making a pretty stereotypic mistake <for Vim critics>, which is, you think that a set of some IDE's *hotkeys*, however complete/comprehensive it is, is conceptually the same as Vim's modality capabilities. (You also drag code snippets and autocompletion into discussion for no reason — btw vim also has those.)
Vim modality is NOT just an existence of a mode consisting only of hotkeys. As a bare minimum, Vim's <N> mode is a command system that allows command chaining and applying commands to dynamically constructed targets (consider «da(»). I doubt Idea's hotkeys can simulate that. Vim modality is a huge world, and one-letter hotkeys — and even the [text objects](http://vim.wikia.com/wiki/Creating_new_text_objects) (N lines, paragraphs) you are briefly mentioning are only a tip of the iceberg. Any comment on Vim macros? :s capabilities? Hotkey/command history capabilities? This is, in fact, another mistake typical for Vim critics: their Vim knowledge and <N> knowledge rarely stretches beyond hjkl and basic positioning/editing commands (which they usually pick as targets for critics, thinking they are targeting the complete «vim way»). The most advanced of those learn text objects, substitution, and ex commands, and think they *finally* mastered vim and are ready to make unbiased judgements. (Not even close.)
3. Regarding a month-long training: Some dev tools are subject to months and years long study. Most people are perfectly ok with spending years for mastering e.g. C++ or networking; mastering a CUSTOMIZABLE personal toolchain (at least, customizable to the extent of programmable text editors like Vim, Emacs or Sublime, not of out-of-the-box-ready IDEs; not even speaking of PIM and productivity tools) is an equally hard task.
Кстати пассаж про скайп 5.5 демонстрирует, что по крайней мере в части возможности работы в скайпе вы врёте. Версии скайпа ниже шестой прекратили работать в 2014 году. Нет, вы не можете позвонить прабабушке на такой же скайп 5.5, вас просто не залогинит.
Уважаю за минимализм, сам предпочитаю подобные «печатные машинки», но, автор, с характеристикой ОС через время запуска ноутбука/софта вы лукавите. Это абсолютно неважная характеристика: ноут обычно усыпляют а не выключают, а для софта важнее скорость работы, чем скорость запуска. Вот пара более интересных замеров, которые вам бы стоило продемонстрировать (подозреваю, что с HDD и turion 2 всё очень очень печально):
— Время полного старта современного тяжёлого сайта, например linkedin. Нет, не надо тянуться к кнопке выключения js, требуется именно полноценно работать на сайте.
— Время полного открытия большого документа *.doc.
— Время, за которое ваш чудо-фоторедактор фактически выполнит поворот фото (а не время запуска команды на выполнение этой операции).
— Фактическое время полного залогинивания в скайп (а не время старта самого приложения).
В статье рассмотрены комбайны, а не парольные менеджеры.
FYI: pass / tpm. Вся дополнительная функциональность или добавляется внешними средствами, или возможно не нужна:
— нужна поддержка usb токена? шифруем PGP ключом, привязанным к токену
— нужна синхронизация? прямое копирование, rsync, rcp, как угодно
— поддержка разных профилей? это вообще задача пользователя, а не менеджера паролей
— администратор имеет доступ к моим данным? В топку такой парольный менеджер сразу
— нужна вставка в браузер? xclip + вставка из системного буфера обмена (pass умеет его чистить) и не морочить себе голову, не такая уж это проблема с безопасностью, тк если у вас скомпрометирован clipboard, то сохранность паролей в менеджере является лишь одной из проблем.
Если бы разработчики имели привычку выкладывать apk на свой офсайт, то этой проблемы бы не было (сайт разработчика — доверенный источник). Но суровая реальность такова, что официальные бинарные релизы в 99% случаев кладутся только в google play (ну или в f-droid). Ну вот собственно и выросла экосистема, которую и юзеры и разработчики сами заслужили.
OK, принимается, формально поддержка Samba есть. Но сделано как всегда через ***. Unix way опять не соблюдается и нет прозрачного доступа к сетевым файлам (только изнутри Ghost Commander, как я понимаю).
Т.е. самый ограниченный шелл и набор утилит из возможных, уместный например на встраиваемых системах и для экстренной поддержки, но не как удобный повседневный рабочий инструмент.
Хм, интересно, судя по возможностям похоже это chroot c обычным arm линуксом и туда вообще можно много чего поставить. Прекрасная иллюстрация к моей критике выше — чтобы сделать из LineageOS нормальную ОС, приходится всё-таки тащить на него GNU сторонними средствами.
То, что шло в стоковой поставке, т.е. встроенный браузер (не знаю как называется) и Chromium.
Пользуюсь LineageOS (Galaxy Tab P5100, стандартная сборка espresso3g, без gapps) по тем же соображениям открытости/приватности. По сравнению с десктопным Linux — более беспомощной ОС не встречал ещё. К андроиду эти слова тоже относятся, только в меньшей мере (тк есть платные приложения, решающие часть проблем ниже)
Нет клиентов для NFS и Samba. В итоге на домашнем сервере куча медиафайлов, книг итд, но нет средств открыть их по сети, приходится как в каменном веке копировать файлы на планшет по ftp/ssh или через карту памяти. Хорошо хоть DLNA есть. Справедливости ради, SMB клиенты видел в гугл-плей для андроида, но свободных не встречал. Ирония ещё и в том, что NFS поддерживается ядром линукса, но из всех стоковых ядер Linux под Android/AOSP/..., известных мне, она выкинута.
Полностью изменена традиционная структура rootfs и системных утилит, потребуется настроить что-то системное (например автозапуск) — если не обладаете знаниями по системному устройству android и знаете только обычные юниксы, то будете долго выяснять, как это делается в LineageOS/android. Для интереса попробуйте запустить (и настроить автозапуск) встроенный в lineageOS SSH сервер — у меня лично не один день это заняло.
Полностью сломано традиционное управление аккаунтами. Есть встроенный дефолтный пользователь (виден, если зайти в терминал) u0_a72, как переименовать/контролировать его — совершенно неясно, как этот u0_a72 соотносится с именем и данными пользователя, отображаемыми в обычном GUI андроида — тоже неясно. Вероятно, это не общесистемный юзер, а просто произвольный юзернейм в приложении. Useradd, usermod — забудьте.
Нет привычной по юниксам экосистемы приложений (coreutils итд) — Google предпочёл создать VM Dalvik и свою собственную экосистему приложений вместо хотя бы портирования coreutils под андроид, не говоря уже о нативном портировании (что соответствовало бы unix way).
В продолжение темы приложений: Я бы ещё смирился, если бы LineageOS предлагал качественные аналоги для типовых утилит под десктопные ОС, но во многих случаях качество этих мобильных аналогов ниже плинтуса. Возьмём Git клиент. Что у нас там предлагает F-droid? SGit/MGit. Ни один из этих замечательных клиентов не имеет консольного интерфейса, не умеет клонировать из локального репозитория или по нестандартному порту SSH. Оба они в принципе умеют только то, что умеют их GUI, то есть весьма немного. Таск-трекер (SyncOrg) вылетает при клике на "добавить", баг висит в трекере, чинить никто не собирается. И т.д., перечислять можно долго.
Далеко не все видеокодеки есть, отсутствие кодека — неразрешимая проблема, непонятно что делать, видимо методом тыка пробовать разные медиаплееры. Довольно неожиданно для тех, кто привык, что в настольных ОС уже давно есть решение в 1 клик (Windows = K-Lite codec pack, *nix — паки gst-plugins-*).
Нет возможности подключить планшет в режиме USB mass storage. Нет и всё.
ТОРМОЗИТ. Даже рендер/прокрутка простейшей статической html страницы в браузере или переключение между приложениями. Всё очень очень медленное. Софта у меня по минимуму, никаких "оптимизаторов", ничего. Я раньше думал, что проблема в устаревшем железе (Galaxy Tab P5100), пока: 1) не увидел у другого человека тормоза UI андроида на флагманском железе (Galaxy A7); 2) поработал на десктопном дистрибутиве на Banana Pi со схожим SoC (Cortex A73) — не формула-1, конечно, но такого позора как тормоза на plain text/plain html/pdfке не наблюдал.
Встроенный почтовый клиент (приложение Mail) требует доступ к телефонной книге, и отказывается (!) запускаться при запрете этого доступа. У меня смутное ощущение, что я где-то уже встречал такой подход...
Короче как только найду время — покурю руководства по запуску нативного Debian на Galaxy Tab, тк даже со всеми проблемами, ожидающими при портировании линукса на ARM планшеты, это всё равно походу лучше lineageos/android.
You get the «angelic patience» perk as a bonus to touch typing if only you manage to get through.
Вот корректный граф:
digraph G {
splines=ortho
node[shape=rect]
edge[arrowhead=none]
{
rank=same
n1 [label="Иванов Иван Иванович"]
n1n2 [label="", shape = point]
n2 [label="Иванова Анна Николаевна"]
n1->n1n2->n2
}
n3n4n5 [label="", shape = point]
{
rank=same
n3 [label="Иванов Михаил Иванович"]
n4 [label="Иванов Константин Иванович"]
n5 [label="Иванов Алексей Иванович"]
}
n3n4n5->{n3 n4 n5}
n1n2->n3n4n5
}
Да, при splines=ortho «из коробки» стрелки из родителей выглядят некрасиво/неодинаково, не знаю с чем это связано, при других значениях spline всё выглядит более однородно. Хак в данном случае — направить рёбра n1->n1n2->n2 вместо n1->n1n2<-n2
Из документации к ядру Linux:
Имхо опасно делать такие pre-commit hook.
Во-первых, вы должны абсолютно доверять clang-format и молчаливо считать, что его переформатирование абсолютно всегда правильно (готовы это гарантировать? Вообще для любого кода?) Во-вторых, бывают случаи, когда нарушение стиля кода — вынужденная мера. В вашем же случае автор коммита даже не узнает про то, что его код был переформатирован.
Более корректное решение: Hook должен отклонять неподходящий коммит. После чего происходит 1 из 2 вещей: а) автор переформатирует код clang-овским или любым другим тулом и отправляет повторно (он также может заранее попытаться реализовать автоформатирование на своей стороне): б) автор доказывает необходимость ошибки форматирования, и коммит разрешается в административном порядке.
Во-вторых, если цель этого примера — сказать «проверяйте домен», то непонятно, почему в ответе про это ни слова, а говорится только про опасность вирусов в PDF.
Upd: Подсказки в заголовке не в счёт (в некоторых других вопросах заголовки кстати давали намеренно вводящую в заблуждение подсказку).
A business idea for TM: autogenerate automated Russian->English translation for all the past articles. English speakers should feel the same pain as us readers of Aliexpress automated translations.
2. You are making a pretty stereotypic mistake <for Vim critics>, which is, you think that a set of some IDE's *hotkeys*, however complete/comprehensive it is, is conceptually the same as Vim's modality capabilities. (You also drag code snippets and autocompletion into discussion for no reason — btw vim also has those.)
Vim modality is NOT just an existence of a mode consisting only of hotkeys. As a bare minimum, Vim's <N> mode is a command system that allows command chaining and applying commands to dynamically constructed targets (consider «da(»). I doubt Idea's hotkeys can simulate that. Vim modality is a huge world, and one-letter hotkeys — and even the [text objects](http://vim.wikia.com/wiki/Creating_new_text_objects) (N lines, paragraphs) you are briefly mentioning are only a tip of the iceberg. Any comment on Vim macros? :s capabilities? Hotkey/command history capabilities? This is, in fact, another mistake typical for Vim critics: their Vim knowledge and <N> knowledge rarely stretches beyond hjkl and basic positioning/editing commands (which they usually pick as targets for critics, thinking they are targeting the complete «vim way»). The most advanced of those learn text objects, substitution, and ex commands, and think they *finally* mastered vim and are ready to make unbiased judgements. (Not even close.)
3. Regarding a month-long training: Some dev tools are subject to months and years long study. Most people are perfectly ok with spending years for mastering e.g. C++ or networking; mastering a CUSTOMIZABLE personal toolchain (at least, customizable to the extent of programmable text editors like Vim, Emacs or Sublime, not of out-of-the-box-ready IDEs; not even speaking of PIM and productivity tools) is an equally hard task.
— Время полного старта современного тяжёлого сайта, например linkedin. Нет, не надо тянуться к кнопке выключения js, требуется именно полноценно работать на сайте.
— Время полного открытия большого документа *.doc.
— Время, за которое ваш чудо-фоторедактор фактически выполнит поворот фото (а не время запуска команды на выполнение этой операции).
— Фактическое время полного залогинивания в скайп (а не время старта самого приложения).
Что значит "добавим"? Куда собрался добавлять поддержку файловых форматов производитель железа?
FYI: pass / tpm. Вся дополнительная функциональность или добавляется внешними средствами, или возможно не нужна:
— нужна поддержка usb токена? шифруем PGP ключом, привязанным к токену
— нужна синхронизация? прямое копирование, rsync, rcp, как угодно
— поддержка разных профилей? это вообще задача пользователя, а не менеджера паролей
— администратор имеет доступ к моим данным? В топку такой парольный менеджер сразу
— нужна вставка в браузер? xclip + вставка из системного буфера обмена (pass умеет его чистить) и не морочить себе голову, не такая уж это проблема с безопасностью, тк если у вас скомпрометирован clipboard, то сохранность паролей в менеджере является лишь одной из проблем.
Если бы разработчики имели привычку выкладывать apk на свой офсайт, то этой проблемы бы не было (сайт разработчика — доверенный источник). Но суровая реальность такова, что официальные бинарные релизы в 99% случаев кладутся только в google play (ну или в f-droid). Ну вот собственно и выросла экосистема, которую и юзеры и разработчики сами заслужили.
<в конце статьи советовать Telegram>
facepalm.jpg
Как это? Прибылью взломщика является прибыль от майнинга, но никак не чьи-либо расходы на ферму.