В адиуме хотелось отключить html в отправляемых сообщениях, соответствующий тикет в трекере адиума был благополучно похоронен, поэтому соорудил быстрый костыль в виде патча внизу. Он делает простую вещь: отключает форматирование размера текста в исходящих xmpp-сообщениях.
Может быть позднее сделаю покрасивее, но пока и так сойдёт. После изменений скомпилять по инструкции с офсайта и установить вместо оригинального. После обновления версии процесс повторить.
diff -r 7ccfc3c4195e Plugins/Purple Service/ESPurpleJabberAccount.m
--- a/Plugins/Purple Service/ESPurpleJabberAccount.m Mon May 26 13:34:36 2014 +0200
+++ b/Plugins/Purple Service/ESPurpleJabberAccount.m Mon Jun 23 23:50:02 2014 +0700
@@ -428,7 +428,7 @@
if (!jabberHtmlEncoder) {
jabberHtmlEncoder = [[AIHTMLDecoder alloc] init];
[jabberHtmlEncoder setIncludesHeaders:NO];
- [jabberHtmlEncoder setIncludesFontTags:YES];
+ [jabberHtmlEncoder setIncludesFontTags:NO];
[jabberHtmlEncoder setClosesFontTags:YES];
[jabberHtmlEncoder setIncludesStyleTags:YES];
[jabberHtmlEncoder setIncludesColorTags:YES];
В XCode 7 выпилен opennsl, поэтому просто так собрать не получится. Можно поставить openssl через brew и дальше в конфиге xcconfigs/Base.xcconfig
изменить строчку с флагами компиляции как-то так:
OTHER_CFLAGS = "$(CFLAGS)" -I/usr/local/Cellar/openssl/1.0.2h_1/include
Дальше в XCode меню: Product → Scheme → Edit scheme поменять Build configuration на Release, затем собрать, итоговый билд (файл Adium.app) будет в каталоге типа ~/Library/Developer/Xcode/DerivedData/Adium-gvwbqjdtkfytqnfuyvumtjfzppsb/Build/Products/Release
.
Или как альтернатива — поставить XCode 6 и собрать в нём, скачать можно по этой ссылке: http://developer.apple.com/devcenter/download.action?path=/Developer_Tools/Xcode_6.4/Xcode_6.4.dmg
Задача: монтировать 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 или меню Go → Connect 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
Поразительно, но эта статья всё ещё актуальна в исходном виде в 2024 году.
Изначально я планировал написать небольшую заметку о наиболее часто используемых командах, однако в процессе получилось так много пояснений, что весь старый текст пришлось удалить и написать новый в формате полноценного туториала. Текст рассчитан на новичков, никогда нормально не сталкивавшихся с гитом. Я также старался не углубляться во внутренности работы репозитория или редкие малоиспользуемые в обычной жизни команды.
Структура статьи традиционная: знакомство с git, базовые команды, общепринятые подходы, а в конце справка о терминах и концепциях, список ссылок. Я не хочу углубляться в историю создания git и вообще стараюсь писать кратко, по делу и без воды, без слишком детальных объяснений команд, без копипасты манов или книг, однако при необходимости буду давать ссылки на сайты или книги по теме.
Я буду рассказывать только о классической программе git, работающей из командной строки. Все примеры использования предназначены для UNIX-подобных систем, например, линукса или макоси. Все примеры создания или модификации файлов также рассчитаны на UNIX-подобные системы. Почему именно консольный вариант: в гуёвых программах типа TortoiseGit очень сложно понять концепты, их авторы подразумевают, что вы всё уже знаете, а это не так. Почему линукс и макось: терминал в windows очень некомфортен, работать там больно и мучительно. Если у вас Windows, советую поставить убунту в Virtualbox/VMWare, также в комментариях Искандер упоминает git-bash для windows, но я об этом ничего сказать не могу.
Перед вами именно туториал, то есть в идеале вы должны читать его последовательно с начала и до конца, выполняя примеры из текста. У git обширная собственная терминология и куча общепринятых (в рамках git-экосистемы) названий сущностей; я постараюсь рассказать о самых важных из них, а вы постарайтесь их запомнить, они действительно очень важны и пригодятся, когда вы будете читать документацию или книги. Часть терминов я буду давать в переводе (например, «ветка» для слова «branch»), а часть — в транслитерации, так как адекватного перевода слова нет (например, «дифф» как перевод слова «diff»). Я очень не люблю многословные переводы простых слов и стараюсь по возможности ими не пользоваться, для понимания короткие слова важнее длинных фраз. Поэтому привыкайте к словам типа «коммит» или «репозиторий».
В тексте много примеров, они все согласованы с текстом и рассчитаны на параллельное их исполнение в процессе чтения. То есть дошли до примера, открыли терминал, выполнили указанные в тексте команды, порадовались, дальше читаем.
Статья ещё не завершена и будет постепенно дописываться, однако уже написанное радикально меняться не будет.
Здесь описаны мои текущие настройки и дополнительные программы для расширения функциональности макоси на макбуке.
Обновлено 2015-06-13: теперь всё рассказывается про Yosemite.
Стандартная конфигурация лично мне не особо нравится, плюс выведенными в интерфейс крутилками также не всё можно настроить, поэтому пришлось гуглить и экспериментировать. Чтобы ничего не забылось, традиционно сливаю всё накопленное в один большой пост со скриншотами, который буду держать в актуальном состоянии. Всё описанное касается версии Mac OS X Yosemite (10.10) с английским интерфейсом.
Эти расширения подходят для браузеров Chrome/Opera/Vivaldi.
- Ghostery (web store)
- Убирает с веб-сайтов всевозможные трекеры/кнопки, которые воруют данные и тормозят браузинг.
- Don't track me Google (web store)
- Убирает гугло-редиректы с результатов поиска в гугле.
- Tabs+ (web store)
- Позволяет настраивать поведение при работе с табами: позиция нового таба, открывать в фоне/переключаться и так далее.
- Stylebot (web store)
- Позволяет задавать собственные стили (CSS) для сайтов.
- YouTube Center (сайт проекта)
- Чрезвычайно полезное расширение, модифицирует ютуб и делает его гораздо более содержательным: увеличивает размер плеера, убирает мешающие блоки справа от видео и ещё кучу улучшений. Расширение в официальный маркет не пускают, можно установить только вручную, ссылка выше.
- Shodan (web store)
- Показывает открытые порты и принадлженость сервера/хостинга.
- User-Agent Switcher for Chrome (web store)
- Расширение, позволяющее переключать User-Agent, причём это можно делать для конкретных сайтов.
- Search by Image (web store)
- Добавляет в контекстное меню картинок пункт для поиска в гуглокартинках
- Переключение между недавними табами
- Это описано у меня в отдельной статье.
Отключенные уже расширения (оставлено для истории):
- EditThisCookie ❗ (web store)
- Позволяет редактировать куки. С версии 131 перестал работать.
- uBlock Origin ❗ (web store)
- Очень эффективно режет всю рекламу. Раньше я пользовался Adblock Plus, но uBlock работает гораздо эффективнее и меньше нагружает систему. Однако с версии 131 это расширение не работает, вместо него можно пользоваться uBlock Origin Lite, но лучше вообще Chrome больше не использовать.
- TabsPlus ❗ (web store)
- Позволяет настроить, где будет открываться новый таб (в начале, в конце, слева от текущего, справа от текущего); куда будет переключаться после закрытия таба (налево, направо, на предыдущий активный); открывать ли новый таб по ссылке в фоне. Это расширение заменяет три других, ранее представленных в списке: Close to the left, Tab Activate, Open New Tab After Current Tab.
- К сожалению, примерно с версии 131 это расширение перестало работать из-за новой политики гугла. Вместо него надо использовать Tabs+
История изменений
- 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
- 2025-01-10 — новые расширения взамен сломанных
- 2025-04-20 — новые расширения взамен сломанных (Tabs+)
Инструкции по разворачиванию LXC на Debian-машине. Всё рассчитано на Debian Stable (Debian 12 Bookworm на момент написания статьи) и версию lxc 5.0.x.
LXC (LinuX Containers, http://linuxcontainers.org/) — это система виртуализации на уровне операционной системы, по сути нечто вроде продвинутого chroot. Удобно использовать для разработки и тестирования софта. Здесь рассматривается работа с lxc только средствами пакета lxc, а другие — например, через libvirt — нет.
Устанавливается стандартным образом в debian:
$ sudo apt install lxc
В Ubuntu (да, пакет называется lxc1):
$ sudo apt install lxc1
Очищаем кеши
Очищаем 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 до и после, чтобы убедиться.
Как использовать curl для отладки HTTP, то есть для отправки на сервер HTTP-запросов. У меня потребности небольшие, поэтому здесь только конкретно нужные мне команды. Оформлено всё традиционно: описание задачи, решение, описание решения.
Отправить GET-запрос и показать ответ вместе с заголовками¶
curl -Gi http://google.com
Опция -G
указывает использовать HTTP GET, опция -i
— включить заголовки в вывод.
Опишу несколько полезных вещей, которые я систематически использую. В основном они касаются организации рабочего пространства и опций конфигурационного файла sublime text 3.
Обновлено 2016-06-26: инструкция изменена для El Capitan
В стандартной конфигурации (речь дальше пойдёт про Mac OS 10.9 Mavericks и выше) при использовании ssh-ключей во встроенном ssh-клиенте парольная фраза запрашивается через макосный security-фреймворк (и стандартный диалог запроса пароля соответственно). После первого ввода пароля запускается ssh-agent и при дальнейших вызовах ssh или git c этим ключом пароль больше не запрашивается.
На мой взгляд, такая схема слишком небезопасная и нужно какое-то разумное ограниченное время жизни «запомненного» ключа в агенте, например, пара минут. Cделать это штатными средствами через диалоги/настройки невозможно, однако можно изменить файл запуска агента и выставить там нужное время жизни ключа в агенте. В результате практически при каждой попытке использовать любой ключ будет выскакивать диалог запроса парольной фразы.