Sometimes I get annoying ^M chars when opening files using Vim – obviously it’s a DOS EOL which mixes the picture.

The good place to seek for fixes and workarounds is Vim Wikia, which not only shows you what to do, but also gives you a brief background on what is going on (if you are unaware).

I am generally happy with dos2unix utility to convert files, but sometimes it seems to be unable to fix the issue. In such situations I do a simple search/replace, right inside of Vim (in ex mode):

Read the rest of this entry

,

Note: this is really a how-to, w/o any in-depth explanation, just a note to myself.

Today, I needed to add SSL support to UMapper.com application running on my Slackware localhost. We use CA-signed certificates on our server, but for local box self-signed was quite enough (all I need is to be able to view development version of site via https). Here what I did:

1. Create private key:

$ openssl genrsa -out localhost.key 1024

2. Generate CSR (Certificate Signing Request):

$ openssl req -new -key localhost.key -out localhost.csr

3. Generate certificate:

$ openssl x509 -req -days 365 -in localhost.csr \
        -signkey localhost.key -out localhost.crt

4. Make sure SSL is enabled in httpd.conf:

# Following two should be uncommented
LoadModule ssl_module lib/httpd/modules/mod_ssl.so
Include /etc/httpd/extra/httpd-ssl.conf

5. Edit httpd-ssl.conf so that virtual host users your created certificate:

# locate and edit cert.details. Make sure localhost.crt and localhost.key
# are present (you either created them there or copied)
SSLCertificateFile "/etc/httpd/certs/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/certs/localhost.key"

6. Restart apache:

$ apachectl restart

That’s it. Please note that browser would still generate exception (and it is a good thing, as otherwise certificates wouldn’t be that useful). All you need is to add your localhost as exception – since we really trust that details we provided during certificate creation are our own :)

P.S. If you are getting “[warn] _default_ VirtualHost overlap on port 443,
the first has precedence”, add NameVirtualHost *:443 into your httpd.conf

,

One-liner that I use almost daily when working with source files (put it on separate lines for readablity):


find . -type f -not -regex '.*/.svn/*.*'
-exec grep -Hn --colour 'SEARCH_STRING '{}' \;

You see, when you need to find some string within source files, and you don’t want to see duplicates coming from .svn folders, this one-liner does the trick – .svn directories are ignored from search.

, ,

There’s probably an easier way to do this, but I haven’t found it. I have quite an extensive collection of IT books in PDF format, and not all of them come with navigation bookmarks. On Windows that was not a problem since Adobe Professional allows you to edit pdf documents. It’s only a pity that it doesn’t have a Linux version (it should be noted that Acrobat Reader is available for Linux).

So, when I wanted to edit newly downloaded e-book in pdf format (there were no bookmarks at all!), I scrattched my head, asked google and didn’t find anything suitable. Going a little deeper with the search I located very good program that does exactly what I need – it is able to add/delete/edit bookmarks of existing pdf files.

Program is called JPdfBookmarks, and it works like a charm (it even has a GUI version).

,

Сегодня возникла надобность добавить нового ftp-пользователя используя шелл. На самом деле задача эта достаточно тривиальная, но все-таки поделюсь с теми, кто возможно не знает как это сделать.

Для начала стоит создать нового пользователя, испольуя стандартные средства useradd:

useradd -d /home/ftp/myuser/ -s /dev/null myuser > /dev/null 2>&1

Домашней принята директория /home/ftp/myuser (в общем-то это стандартно), можно естественно использовать любую другую директорию, хотя лучше все же делать не извращаясь.

В большинстве случаев, доступ к шеллу должен быть закрытым для пользователя, поэтому мы использовали флаг “-s /dev/null”, т.е. как shell у пользователя будет использована псевдо-оболочка /dev/null. Стоит заметить, что у меня (на CentOS) подключиться через фтп удалось только при использовании /bin/false, /dev/null же перекрывал доступ как к шеллу, так и к фтп. В чем дело разбираться не захотел, возможно именно так это и должно работать на этой дистре (хотя в RedHat изначально добавленна псевдо-оболочка /dev/null в /etc/shells вроде как именно для этих целей).

После создания пользователя, задаем пароль:

passwd myuser

Далее, следует убедиться что /dev/null (в случае с CentOS /bin/false) присутсвуют в /etc/shells. Если наша псевдо-оболочка не найдена, добавляем ее.

И последнее, для удобства пользователя, заходящего через фтп, стоит по-определению открывать именно директорию его аккаунта. Как это сделать? ЛеХко! Для этого редактируем /etc/passwd:
вместо

myuser:x:10010:10010::/home/ftp/myuser/:/bin/false

вставляем

myuser:x:10010:10010::/home/ftp/./myuser/:/bin/false

таким образом при входе в систему, пользователь попадет в каталог myuser.

Вот, в общем-то, и все! Удачного начала рабочей недели.

В случае когда определенные файлы/каталоги не должны попадать под контроль версий, достаточно установить свойство svn:ignore:

svn propset svn:ignore *.pyc dirname

В случае если такое свойство уже существует:

svn propedit svn:ignore dirname

Например, на UMapper‘е для игнорирования авто-сгенеренных CAPTCHA файлов находящихся в каталоге /files/captcha и имеющих названия вида “cap_RANDOM_STRING”, я использовал следующую комманду:

svn propset svn:ignore cap_* /files/captcha/
,

Еще кое-что о развертке приложения с использованием svn. Бывает что нужно изменить все файлы или каталоги (а также подкаталоги), скажем сменить permission mask. Это легко сделать используя:

find . [pattern] -exec chmod +x '{}' \;

Однако, в наших каталогах, кроме собственно данных, находяться также системные папки Subversion – .svn, и изменения в них вноситься вручную никак не должны. Чтобы игнорировать все .svn каталоги, используем опцию -prune:

find .  -path '*/.svn' -prune -o -type d -print

Возвратяться все каталоги кроме .svn.

,

Легко! Используем .htaccess:

1
2
3
4
RewriteEngine On
 
RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
, ,

More a note to myself than a regular post: if you need to tweak PHP settings per vhost on your dedicated server, you can do it easily.

Read the rest of this entry

, , ,