Expertus metuit
Sergey Stolyarov | 2014-05-11 в 01:33

Задача: монтировать nfs-ресурсы в макоси.

В принципе, в макоси уже встроена поддержка nfs и соответствующие сетевые ресурсы можно монтировать через Finder (⌘K), однако чтобы это работало для обычного юзера, требуется некоторое шаманство на стороне linux-сервера.

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

На линукс-машине в /etc/exports прописываем что-то вроде:

/home/user/downloads 192.168.13.12(ro,sync,no_subtree_check,insecure)

Здесь адрес 192.168.13.12 — это айпишник макосной машины. После чего в Finder стандартным образом (через ⌘K или меню GoConnect to Server...) монтируем ресурс, адрес указываем в виде nfs://nfs-server.name/home/user/downloads.

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

Ещё одна вредная и очень трудноуловимая проблема связана с макосной интерпретаций кодирования «составных» букв в именах файлов, например, «й» или «ё», или «ü». Если имя файла (или вообще где-то в пути до файла встречается) содержит такую букву, то файл просто не откроется, причём с невразумительной ошибкой типа “The application can’t be found.” Я в детали не хочу вдаваться, можете сами погуглить по ключевым словам “mac os x nfc nfd unicode”.

Решение достаточно простое: нужно изменить опции монтирования nfs-ресурсов по умолчанию, для этого добавьте в файл /etc/nfs.conf такую строчку:

nfs.client.mount.options = nfc

Теперь можно монтировать через Finder и всё будет в порядке.

Ну и команда для всяких тестов, вдруг пригодится:

/sbin/mount_nfs -v 192.168.13.12:/home/user/downloads /Volumes/test
Sergey Stolyarov | 2014-02-17 в 15:20

Поразительно, но эта статья всё ещё актуальна в исходном виде в 2024 году.

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

Структура статьи традиционная: знакомство с git, базовые команды, общепринятые подходы, а в конце справка о терминах и концепциях, список ссылок. Я не хочу углубляться в историю создания git и вообще стараюсь писать кратко, по делу и без воды, без слишком детальных объяснений команд, без копипасты манов или книг, однако при необходимости буду давать ссылки на сайты или книги по теме.

Я буду рассказывать только о классической программе git, работающей из командной строки. Все примеры использования предназначены для UNIX-подобных систем, например, линукса или макоси. Все примеры создания или модификации файлов также рассчитаны на UNIX-подобные системы. Почему именно консольный вариант: в гуёвых программах типа TortoiseGit очень сложно понять концепты, их авторы подразумевают, что вы всё уже знаете, а это не так. Почему линукс и макось: терминал в windows очень некомфортен, работать там больно и мучительно. Если у вас Windows, советую поставить убунту в Virtualbox/VMWare, также в комментариях Искандер упоминает git-bash для windows, но я об этом ничего сказать не могу.

Перед вами именно туториал, то есть в идеале вы должны читать его последовательно с начала и до конца, выполняя примеры из текста. У git обширная собственная терминология и куча общепринятых (в рамках git-экосистемы) названий сущностей; я постараюсь рассказать о самых важных из них, а вы постарайтесь их запомнить, они действительно очень важны и пригодятся, когда вы будете читать документацию или книги. Часть терминов я буду давать в переводе (например, «ветка» для слова «branch»), а часть — в транслитерации, так как адекватного перевода слова нет (например, «дифф» как перевод слова «diff»). Я очень не люблю многословные переводы простых слов и стараюсь по возможности ими не пользоваться, для понимания короткие слова важнее длинных фраз. Поэтому привыкайте к словам типа «коммит» или «репозиторий».

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

Статья ещё не завершена и будет постепенно дописываться, однако уже написанное радикально меняться не будет.

Sergey Stolyarov | 2014-02-15 в 12:48

Здесь описаны мои текущие настройки и дополнительные программы для расширения функциональности макоси на макбуке.

Обновлено 2015-06-13: теперь всё рассказывается про Yosemite.

Стандартная конфигурация лично мне не особо нравится, плюс выведенными в интерфейс крутилками также не всё можно настроить, поэтому пришлось гуглить и экспериментировать. Чтобы ничего не забылось, традиционно сливаю всё накопленное в один большой пост со скриншотами, который буду держать в актуальном состоянии. Всё описанное касается версии Mac OS X Yosemite (10.10) с английским интерфейсом.

Sergey Stolyarov | 2014-01-29 в 19:37

Эти расширения подходят для браузеров Chrome/Opera/Vivaldi.

uBlock Origin (web store)
Очень эффективно режет всю рекламу. Раньше я пользовался Adblock Plus, но uBlock работает гораздо эффективнее и меньше нагружает систему.
Ghostery (web store)
Убирает с веб-сайтов всевозможные трекеры/кнопки, которые воруют данные и тормозят браузинг.
Don't track me Google (web store)
Убирает гугло-редиректы с результатов поиска в гугле.
TabsPlus (web store)
Позволяет настроить, где будет открываться новый таб (в начале, в конце, слева от текущего, справа от текущего); куда будет переключаться после закрытия таба (налево, направо, на предыдущий активный); открывать ли новый таб по ссылке в фоне. Это расширение заменяет три других, ранее представленных в списке: Close to the left, Tab Activate, Open New Tab After Current Tab.
Stylebot (web store)
Позволяет задавать собственные стили (CSS) для сайтов.
YouTube Center (сайт проекта)
Чрезвычайно полезное расширение, модифицирует ютуб и делает его гораздо более содержательным: увеличивает размер плеера, убирает мешающие блоки справа от видео и ещё кучу улучшений. Расширение в официальный маркет не пускают, можно установить только вручную, ссылка выше.
EditThisCookie (web store)
Позволяет редактировать куки.
Shodan (web store)
Показывает открытые порты и принадлженость сервера/хостинга.
User-Agent Switcher for Chrome (web store)
Расширение, позволяющее переключать User-Agent, причём это можно делать для конкретных сайтов.
Search by Image (web store)
Добавляет в контекстное меню картинок пункт для поиска в гуглокартинках

История изменений

  • 2018-10-31 — новые ссылки вместо неработающих старых
  • 2019-12-10 — новое расширение Tab Position Customizer 2 вместо заброшенного Tab Position Options
  • 2022-09-14 — новое расширение Open New Tab After Current Tab вместо удалённого и заблокированного Tab Position Customizer 2
Sergey Stolyarov | 2014-01-23 в 11:10

Инструкции по разворачиванию LXC на Debian-мащине. Всё рассчитано на Debian Stable (Debian 10 Buster на момент написания статьи) и версию lxc 3.0.x.

LXC (LinuX Containers, http://linuxcontainers.org/) — это система виртуализации на уровне операционной системы, по сути нечто вроде продвинутого chroot. Удобно использовать для разработки и тестирования софта. Здесь рассматривается работа с lxc только средствами пакета lxc, а другие — например, через libvirt — нет.

Устанавливается стандартным образом:

$ sudo apt install lxc
Sergey Stolyarov | 2014-01-21 в 11:45

Очищаем кеши

Очищаем pagecache:

sync; echo 1 > /proc/sys/vm/drop_caches

Очищаем dentry и inodes:

sync; echo 2 > /proc/sys/vm/drop_caches

Очищаем pagecache, dentry и inodes:

sync; echo 3 > /proc/sys/vm/drop_caches

Эта магия освобождает много памяти. Можно запустить free до и после, чтобы убедиться.

Sergey Stolyarov | 2013-12-16 в 21:37

Как использовать curl для отладки HTTP, то есть для отправки на сервер HTTP-запросов. У меня потребности небольшие, поэтому здесь только конкретно нужные мне команды. Оформлено всё традиционно: описание задачи, решение, описание решения.

Отправить GET-запрос и показать ответ вместе с заголовками

curl -Gi http://google.com

Опция -G указывает использовать HTTP GET, опция -i — включить заголовки в вывод.

Sergey Stolyarov | 2013-11-23 в 14:55

Опишу несколько полезных вещей, которые я систематически использую. В основном они касаются организации рабочего пространства и опций конфигурационного файла sublime text 3.

Sergey Stolyarov | 2013-11-18 в 13:45

Обновлено 2016-06-26: инструкция изменена для El Capitan

В стандартной конфигурации (речь дальше пойдёт про Mac OS 10.9 Mavericks и выше) при использовании ssh-ключей во встроенном ssh-клиенте парольная фраза запрашивается через макосный security-фреймворк (и стандартный диалог запроса пароля соответственно). После первого ввода пароля запускается ssh-agent и при дальнейших вызовах ssh или git c этим ключом пароль больше не запрашивается.

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

Sergey Stolyarov | 2013-11-16 в 22:44

Homebrew — клёвая штука, однако она крайне небезопасная в обычном режиме установки — файлы ставятся в каталог /usr/local с правами текущего пользователя, поэтому, если в систему пролезет зловред, он легко сможет изменить очень важные для безопасности файлы в этом каталоге. В homebrew faq очень не советуют ставить brew через sudo, однако там неявно имеется в виду установка с правами суперюзера. Так действительно жить нельзя, поэтому пойдём другим путём — выделим для brew отдельного юзера и отдельную группу, и все операции по установке будем проводить через него.

© 2006—2024 Sergey Stolyarov | Работает на pyrengine