0

FreeBSD: fix non-ASCII characters input

Paste this into ~/.bash_profile

export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export LC_COLLATE=POSIX
export LC_ALL=en_US.UTF-8
0

Get the most popular user agents from access.log of nginx

cat access.log | sed -E 's/.+("[^"]+")$/\1/g' | sort | uniq -c | sort -nrk1
0

распаковать несколько архивов zip или rar

for x in *.zip; do unzip -o "$x" -d "${x//\.zip}" ; done
for x in *.rar; do unrar x "$x" ; done

Sources:

  1. How to unzip multiple files (encrypted) in a directory. — The UNIX and Linux Forums
  2. bash replace all matches of regex substring in string
0

svn: изменить адрес репозитория в рабочей копии

svn switch --relocate OLD_URL NEW_URL

HINT: Если вы обращаетесь к репозиторию по IP, то лучше прописать для этого IP алиас в /etc/hosts и обращаться к репозиторию по этому алиасу, тогда, при внезапной смене IP, такой фигнёй вам страдать не придётся.
Источник: Subversion Users: Re: Changing server IP in working copy

0

postgres: сделать дамп и восстановить из дампа

Команду для создания дампа можно взять при проделывании этой операции в pgadmin’е:

/usr/bin/pg_dump --host 127.0.0.1 --port 5432 --username "postgres" --role "rolename" --no-password  --format plain --encoding UTF8 --inserts --column-inserts --verbose --file "/home/username/dump.sql" "dbname"

Чтобы развернуть базу данных из дампа:

psql -d dbname -U username -f dump.sql
0

Свернуть и развернуть процесс в терминале

Чтобы «свернуть» процесс, который в данный момент что-то выводит в STDOUT, просто нажимаем ctrl + z. Появится примерно такой вывод:

[1]+  Stopped                 mc
hackprime@PC:~$

Число в квадратных скобках — номер свёрнутой задачи.
Чтобы «развернуть» свёрнутый процесс используем команду fg:

hackprime@PC:~$ fg 1

Можно не передавать номер задачи, тогда будет восстановлен последний свёрнутый процесс.
Чтобы посмотреть список всех свёрнутых процессов — используем jobs:

hackprime@PC:~$ jobs
[1]   Stopped                 mc
[2]-  Stopped                 htop
[3]+  Stopped                 top

Источник: sh — How can I resume a stopped job in Linux? — Super User

0

sshfs и nfs: что лучше?

Задача: воспроизводить музыку с домашнего сервера с помощью плеера banshee на домашнем клиенте и на работе.
Решение: монтируем с помощью sshfs каталог с сервера на клиент.
… Читать дальше

0

linux: установить права только для вложенных директорий

Если мы сделаем:

hackprime@PC$ chmod -R 755 ~/somedir

то права прставятся как у директорий, так и у файлов. Чтобы установить права только для директорий:

hackprime@PC$ find ~/somedir -type d -exec chmod 0755 {} \;

Есть ещё один вариант, но он не модифицирует права у вложенных директорий, в именах которых есть пробел, т.к. команда не может их корректно распарсить.

hackprime@PC$ find ~/somedir -type d | xargs chmod 0755

Источники:

  1. Изменить права только на все директории | Linux и Unix | Сервер | Web.onRails
  2. forum.opennet.ru — «Изменение прав доступа только для директорий» (1)
0

python: Bad magic number ImportError

Подобная ошибка всплывает, когда вы пытаетесь запустить уже скомпилированный *.pyc-файл версией питона, которая отличается от той, в которой он изначально компилировался. Решение: удалить и перекомпилировать. Но что если это не просто маленький скрипт и большое приложение с кучами папок-подпапок? Тут нам на помощь приходит bash:

~/your_projects_dir/project_name$ find -name *.pyc | xargs rm

Источники:
1) python — What's the bad magic number error? — Stack Overflow
2) Полезные команды Linux — Movable Type Wiki

0

rsa-ключи или как попасть на сервер без пароля

Задача: нужно заходить на удалённый сервер и при этом не вводить пароль при входе.
Решение: авторизация по rsa-ключу.

Генерируем:

ssh-keygen -t rsa

Добавляем:

ssh-add ~/.ssh/id_rsa

Публикуем на удалённом сервере:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

Источники:
1) Запуск удаленной сессии через xinit | Leolik’s blog
2) Agent admitted failure to sign using the key.Permission denied (publickey).

0

Кодек-паки в ubuntu? Не, не слышал.

На самом деле:

sudo apt-get install ubuntu-restricted-extras
0

Запуск µTorrent в Ubuntu

Да, для Linux есть своя версия µTorrent, но она сейчас слишком сырая и урезанная. Поэтому будем запускать виндовый utorrent.exe с помощью wine. … Читать дальше

0

Debian: cоздать пользователя и добавить в группу

Создать пользователя:

$ adduser username

Добавить пользователя в группу:

$ adduser username groupname

Наделить пользователя правами суперпользователя:

$ adduser username sudo
2

Запаковка в tar через консоль

Создать архив example.tar содержимого каталога /home

tar -cvf example.tar /home

Создать упакованный архив example.tar.gz содержимого каталога /home

tar -zcvf example.tar.gz /home

c — создать новый файл архива.
v — вывести детали.
f — имя файла, куда архивировать.
z — использовать сжатие.

Утащил отсюда.

2

Узнать размер директории

$ du -hs /path/to/folder
UPDATE: (from Mayoi Hachikuji)
Чтобы узнать размер нескольких объектов (включая директории), а также их сумму, используем флаг -c. Работает также с масками.

$ du -shc ./dir1 ./dir2 ./dir3
3

Как я VirtualBox ставил

Речь сегодня пойдёт о виртуальной машине от компаии Oracle — VirtualBox.

Продукт достаточно хороший, не громоздкий, обладает всеми необходимыми функциями. Однако, самое весомое его преимущество (по сравнению с той же VMware) — он бесплатный.

На Windows он работает сразу «из коробки». Установил, запустил, создал/подключил виртуальный HDD и вперде!

В Linux же, как обычно, нужно немного (или много) изъебнуться. Установку VB в Ubuntu/Debian я как раз и буду описывать.

Итак, поехали: … Читать дальше

0

fatal error: Python.h: No such file or directory

У меня такая ошибка возникла при попытке установить сторонний модуль питона через PIP. Решение у проблемы элементарное — поставить dev-пакет к своей версии питона. Для debian/ubuntu это может выглядеть так:

$ sudo apt-get install python2.7-dev

Источники:
Alex Sleat — How To Fix: fatal error: Python.h: No such file or directory

0

Смена версии Python по умолчанию

Не всегда между старшей и младшей версиями какого-либо программного продукта есть обратная совместимость. Если под одной версией работает нормально, то под другой может и не заработать вовсе.

С подобной проблемой я как раз и столкнулся. Django для своей работы требовал Python 2.6, однако в убунточке по умолчанию стоит Python 2.7. Казалось бы, ничего сложного, доствь 2.6 и всё ок. Но нет. Даже поставив рядом 2.6 Django всё равно брал версию, которая стоит по умолчанию, т.е. 2.7. Выход из данной ситуации простой — понизить версию питона ручками. Итак, поехали:

1) Открываем с правами рута файл /usr/share/python/debian_defaults и меняем версию по умолчанию на python2.6.

2) Далее, в директории /usr/bin/ ищем файл python и переименовываем его:

$ sudo mv /usr/bin/python /usr/bin/python27

Примечание: именно переименовываем, а не удаляем, т.к. в будущем он может пригодиться.

3) В той же директории создаём символьную ссылку на исполняемый файл Python 2.6 с именем python (как изначально и было).

$ sudo ln -s /usr/bin/python2.6 /usr/bin/python

4) Перезагружаемся.

Теперь по умолчанию используется Python 2.6.

PS:
После понижения версии Python могут перестать работать некоторые приложения (например у меня после понижения отказался работать установщик проприетарных драйверов Jockey), которые настроены так, чтобы использовать версию Python по умолчанию, и если версия python по умолчанию их не удовлетворяет — они не работают. Лечится это тем же способом, но только наоборот. Поэму неиспользуемые символьные ссылки на python лучше не удалять. И ещё: при понижении версии, все модули, поставленные через PIP, придётся устанавливать заново.

Источники:
Change the default python version in ubuntu

0

PostgreSQL: value too long for type character varying

Импортировал я однажды базу данных PostgreSQL (в кодировке utf-8, конечно же) под управлением ubuntu, и всё шло хорошо, CREATE’ы выполнялись, индексы создавались… И тут, не пойми откуда, стали сыпаться ошибки вида «DatabaseError: value too long for type character varying(50)». Вариант о действительном наличии в запросе значений длиннее, чем положено, сразу отметается, т.к. в Debian всё отлично импортировалось. Значит, косячит PostgreSQL.

Дело в том, что шаблонная база данных template1, копированием которой создаются новые базы данных по умолчанию, изначально имела кодировку не utf-8. Следовательно, для корректного импорта нам нужно её перекодировать.

Для этого подключимся к базе данных и выполним несколько запросов.

$ psql -U postgres

Даём разрешение на подключение к базе данных template0.

UPDATE pg_database SET datallowconn = TRUE WHERE datname = 'template0';

Переключаемся к базе данных template0.

\c template0

Удалаяем опцию «это шаблон» у базы данных template1.

UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';

Удаляем template1.

DROP DATABASE template1;

Создаём новую базу с именем template1 по шаблону template0 с кодировкой UNICODE.

CREATE DATABASE template1 WITH template = template0 encoding = 'UNICODE';

Устанавливаем базе template1 флаг шаблона.

UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';

Переключаемся к базе данных template1.

\c template1

Запрещаем подключения к template0.

UPDATE pg_database SET datallowconn = FALSE WHERE datname = 'template0';

Теперь проблем с кодировкой не будет.

PS:
Если нет желания или необходимости трогать базу template1, то можно попробовать просто создать базу с указанием шаблона template0.

CREATE DATABASE %dbname% TEMPLATE template0;

Источники:

  1. StackOverflow: postgresql — Django fixture fails, stating "DatabaseError: value too long for type character varying(50)";
  2. PostgreSQL — Управление базами данных.
0

phpBB3 – «Общая ошибка Could not get style data»

При переносе форума phpBB3 на хостинг под управлением Linux может возникнуть такая ошибка. А решается она просто — достаточно установить права на директорию cache и всему её содержимому для записи всем (как вариант, содержимое можно просто удалить).

$ chmod -R 777 /path/to/phpbb3/cache/