Git Bash for Windows

В целом командная строка под оффтопик это страх и ужас. sh.exe конечно же спасает, но отсутствие тесной интеграции с системой (в linux можно делать все из консоли) создает неудобства. В общем пользователям git bash for win посвящается: запускаем несколько окон с гитом в нужных проектах из bat файла:

rem git-win.bat
cd C:\dev\projects\project1
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login -i

cd C:\dev\projects\project2
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login -i

Если у вас 32-битная система(интересно, остались еще такие?) то этот файл

rem git-win-x86.bat
cd C:\dev\projects\project1
start "" "%ProgramFiles%\Git\bin\sh.exe" --login -i

cd C:\dev\projects\project2
start "" "%ProgramFiles%\Git\bin\sh.exe" --login -i

How-to: AWstats installation and configuration on Debian

This is a simple tutorial on how to install AWstats on Debian and configure it for displaying web statistics. I’ve tried this on lenny, but it should also work on other versions with small or no modifications.

First, make sure your web server is configured to write access logs to combined format. This is default behavior for nginx and lighttpd servers, but not for apache. To tell apache to use combined format, use something like this:

CustomLog logs/access_log combined

Install awstats package:

apt-get install awstats

Create a config file for our new domain:

cp /etc/awstats/awstats.conf /etc/awstats/awstats.www.example.com.conf

Edit this lines in new configuration file:

LogFile="/var/log/nginx/access.www.example.com.log"
LogFormat=1
SiteDomain="www.example.com"
DNSLookup=0
DirData="/var/lib/awstats/www.example.com/"
HostAliases="example.com"

Create a database directory:

mkdir /var/lib/awstats/www.example.com/

OK, configuration is now done, we can create some stats… simplest way is by using awstats.pl:

/usr/lib/cgi-bin/awstats.pl -config=www.example.com -update -output > /www/sites/www.example.com/awstats.html

But, this will only create main reports. To create all reports, you can use awstats_buildstaticpages.

It’s a good idea to save this command into a script file (e.g. /data/bin/awstats/awstats_update_example) which can be easily called when we need to update stats.

/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl -update -config=www.example.com -dir=/www/sites/webstats.example.com/ -awstatsprog=/usr/lib/cgi-bin/awstats.pl > /dev/null

Updating can be done from cron, but that can result in lost data, because of log rotation. Best option is to call update script just before logs are rotated. Nginx logs are, by default, rotated daily, so we can just insert our script in nginx logrotate configuration file (/etc/logrotate.d/nginx):

/var/log/nginx/*.log {
    daily
    ...
    sharedscripts
    prerotate
        /data/bin/awstats/awstats_update_example
    endscript
    ...
}

You can try to run logrotate manually with:

logrotate -vf /etc/logrotate.conf

OK, now we just need to make html files available from web.

I will post configuration for nginx, but that can be easily adapted for other web servers.

This is an example of virtual host file (e.g. /etc/nginx/sites-enabled/webstats.example.com):

server {
    listen 80;
    server_name  webstats.example.com;

    location / {
        root   /www/sites/webstats.example.com/;
        index  awstats.www.example.com.html;
    }

    location  /awstats-icon/ {
        alias  /usr/share/awstats/icon/;
    }

    auth_basic            "Restricted";
    auth_basic_user_file  /etc/awstats/webstats.example.com.htpasswd;

    access_log /var/log/nginx/access.webstats.example.com.log;
    error_log /var/log/nginx/error.webstats.example.com.log;
}

Create a password file:

htpasswd -c /etc/awstats/webstats.example.com.htpasswd master

Reload nginx configuration:

/etc/init.d/nginx reload

And we’re done.

AWstats beside this static pages also supports dynamic CGI reports, but that is slower and less secure, so unless you don’t really need that, static pages will do just fine.

NPM and Ubuntu 12.04/14.04. Upstream Node.js and NPM.

Ubuntu 14.04

На более свежей убунте все решилось еще проще:

sudo apt-get install nodejs nodejs-legacy npm

Возможно также можно в 12.04.

Node.js сам по себе очень даже ничего, только вот тот факт что парни пакеты не научились собирать удручает.

Ubuntu 12.04

Ок, может я что-то делал не так, но в Ubuntu 12.04.3

npm install

не работает.

Ставился npm и node из репозиториев:

sudo apt-get install node
sudo apt-get install npm

Видимо версия слишком старая. Поставим Node.js посвежее:

sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

А теперь всё стало на свои места.

Удаляем дополнения Ubuntu из Firefox

Как-то мне не нравятся левые ненужные дополнения в Firefox’е, поискав пакеты которые отвечают за их появление в браузере находим:

xul-ext-ubufox xul-ext-websites-integration

Удаляем их и наслаждаемся 🙂

sendmail send mail too slow [solution]

After setup sendmail in my instances running in Digital Ocean cloud, i tried to send few mails using simple php function mail().

And unfortunately, mails sends too slow. About 60 seconds needed to send one email.

i go to logs (/var/log/mail.err), to see whats happens:

Sep 17 11:40:01 ibragimovby sm-msp-queue[6689]: My unqualified host name (ibragimovby) unknown; sleeping for retry
Sep 17 11:41:01 ibragimovby sm-msp-queue[6689]: unable to qualify my own domain name (ibragimovby) -- using short name

So, after i add following line in /etc/hosts:

127.0.0.1	localhost localhost.localdomain ibragimovby

and emails started sending immediately.

Gradle and JDK version

Yesterday at home I had a problem with a project that worked fine at work.

When I build(gradle build from Idea) the project, I get the following error:

:natrus-api:natrus-common-api:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':natrus-api:natrus-common-api:compileJava'.
> invalid source release: 1.8

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Hmm, check SDK in Idea – 1.8. Project setting fine, gradle settings too.

What wrong?

Ah, ok, i run Idea using jdk 1.7. When i run Idea using jdk 1.8 build succeeds.

Intellij Idea 13 on Ubuntu

Что, зачем?

На работе приходится сидеть под(именно под, ага) операционной системой от M$. На ноутбуке же естественно стоит свободная и открытая система. Соответственно шорткаты отличаются из-за различий в DE. Но так как я начал последнее время много работать в Idea и дома, то приходиться учить шорткаты и для линуксовой раскладки.

Основные отличия раскладки для Linux и Windows

Название операции
Default Gnome Keymap | Default XWin Keymap
Back\Forward
Alt+Shift+Left\Right | Ctrl+Alt+Left\Right
Find Usages
Alt+Shift+7 | Alt+F7

Вот и всё на данный момент. Больше различий я не нашел 🙂 Список будет пополняться со временем, если будут найдены новые несовместимости.

See also

Краткая шпаргалка по сочетаниям клавиш в IntelliJ IDEA

Apt problems in Ubuntu

E: Sub-process /usr/bin/dpkg returned an error code (1)

So solution of the problem:

I had a similar problem and what i found that worked for me was going into /var/lib/dpkg/info and deleting everything that had that name and you may also have to go into /var/cache/apt/archives and do the same thing. I’m fairly new to linux so if this breaks anything i am sorry. i haven’t run into any problems yet that this has caused.

Idea Hint #2

В Ubuntu, чтобы запускать Intellij Idea не как shell скрипт, а как обычную программу из любимого лаунчера(докера) нужно создать .desktop файл и поместить его в соответствующее место(в ubuntu это /usr/share/applications/).

Создать его можно вручную, а можно запустить идею, зайти в “Tools” > “Create Desktop Entry” и идея сама создаст файл, а также положит его в нужное место.