Lenovo S10-2 & linux

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

Яндекс.Маркет загоняет всё описание в одну строчку таким образом:
Atom N270 1600 Mhz/10.1"/1024x600/1024Mb/160Gb/Wi-Fi/3G/WinXP Home

С самого начала на нём стоял WinXP и пробная версия MS office. Мелкомягкий офис сразу же был заменен на openOffice. Поставил весь джентельменский набор разработчика - NetBeans, FAR, Total Commander, SVN, чё то ещё.. Целых несколько дней мы с вендой терпели друг друга

Read more

tar: Скачать, разпаковывая

Админам или околоадминам давно приелись комманды

$ wget http://site.com/files/file.tar.gz
$ tar vxf file.tar.gz

Всё здорово, привычно, но...

  • Как часто нужен скачанный архив? Конечно зависит от специфики работы. Мне например не часто, т.е. добавляем удаление:

    $ rm file.tar.gz
  • А как быть в случае, когда по отдельности архив и распакованный архив умещаются на диске, но одновременно нет? Ну тупо места не хватает. Бывает, да :)

И есть решение! :)

Read more

Синхронизация времени по cron

Облачный хостер стал давай сбой - иногда сбивается время. Потребовалось хоть какой то workaround - в виде периодической синхронизации времени

Делается всё очень просто! Разумеется, требуются права администратора

$ cd /etc/cron.hourly
$ cat > date-sync.sh
/вставляем сюда/
#!/bin/sh
ntpdate pool.ntp.org
/жмём ctrl-d/
$ chmod a+x date-sync.sh

На этом всё :) Теперь каждый час будет синхронизироваться время. По вкусу можно выбрать другой серевер времени.

Read more

sendmail: не доходит почта свой домен

Интересная ситуация: будь то хардкорный sendmail или exim - почта уходит в интернеты на ура - на разные домены, кроме своего. Предполагается, что вы используете чужую почту, будь то гугл или яндекс, или что нить ещё, привязанную на ваш домен.

Возникает обычно ошибка наподобие:

Feb 8 22:14:54 domain sendmail[14575]: p18JEqq8014575: to=rux@domain.com,
ctladdr=www-data (33/33), delay=00:00:02, xdelay=00:00:01,
mailer=relay, pri=30937, relay=[127.0.0.1] [127.0.0.1], dsn=5.1.1, stat=User unknown
Feb 8 22:14:55 domain sm-mta[14580]: p18JEstD014580: <rux@domain.com>... User unknown

А в чём собственно проблема? Почему не работает из каробки?

Read more

php trick: вариант обхда open_basedir restriction

Задача: нужно перечислить файлы не в директории сайта

Проблема: действуют ограничения, например:

Warning: dir() [function.dir]: open_basedir restriction in effect.
File(/etc/awstats) is not within the allowed path(s): (.) in /var/www/site/path/index.php on line 22
Warning: dir(/etc/awstats/) [function.dir]: failed to open dir: Operation not permitted
in /var/www/site/path/index.php on line 22

Есть вариант обойти это, при условии что разрешенно выполнять приложения через exec() и это unix-система

Read more

SVN: 503 ошибка при иморте .htaccess

Очень интересная ошибка: когда происходит комит проекта в котором есть .htaccess процес импорта прерывается:

Adding .htaccess
svn: Commit failed (details follow):
svn: Server sent unexpected return value (503 Service Unavailable) in response
to PROPFIND request for '/svn/source/!svn/wrk/a-lot-of-symbols-here/.htaccess'
svn: Server sent unexpected return value (503 Service Unavailable) in response
to PROPFIND request for '/svn/source/.htaccess'

И с чего бы тут ошибка должна быть? :)

Read more

Linux: простой web сервер на asm

Спятил, да? А ещё если напишу, что планировал сделать многопоточность и нечто CGI-интерфейса? Вполне может быть, в рамках just for fun

Но остановился на том, чтоб отдавать статические страницы - время не дало допилить, да и энтузиазм уменьшился. Идея мне пришла из за курсовой работа по "Системному программированию" В СПбГУ ИТМО. Всех заставили писать резидент под DOS, на 8086 архитектуре. Не торт.

Основные фитчи, которые я успел реализовать:

  • Форк, при необходимости
  • Чтение конфига(ini-like)
  • Создание слушающего сокета, установка параметров
  • Парсер заголовков и запроса
  • Обработчик запросов статического контента(не в /cgi-bin/)
  • В некоторых местах совершенно корявую работу со стеком

Реализовано на NetwideASM, c частичным использованием функций glibc. Работать сервер будет только на 32-битном процессоре i686+, из за того, что дёргается прерывание ядра Linux - а номера функций отличаются в зависимости от процессора.

Read more

Linux: count of lines and symbols in file

Цель: подсчитать количество строк и/или символов в файле.

Для этого нужно воспользоваться утилитой wc. Для подсчёта количества строк нужно воспользоваться флажком -l (lines), для символов: -c (chars)

Read more

Java: создание Jar руками

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

Всё довольно просто, достаточно разбить по шагам.

  • Скормить javac все исходники, прямо одной командой кучу файлов
  • Необходимо создать текстовый файл manifest в корне проекта(на уровне с src), в котором указать класс, который будет загружен(такого вида строчка Main-Class: practice.Main). Если не указать этот класс, то появится ошибка, навроде Failed to load Main-Class manifest attribute from
  • Запаковать все с помощью jar
  • По необходимости запустить командой java -jar file.jar

Read more

Apache: быстрое добавление сайтов

Набросал простой скрипт, для удобного создания VirtualHost в debian.

Наверное тоже надоело лесть, создавать vhost по существующему, править пути, перезапускать сервер и так много раз и по кругу? А ещё не хватало опечататься?

Предлагаю такое решение: скрипт, делающий всю эту рутинную работу. Принимает только 1 аргумент - имя сайта и сам создаёт скелет и VirtualHost по шаблону.

В каталоге с сайтами создаётся папка с указанным именем. В ней - ещё 2 папки - log и www - для логов и сайта соответственно. А так же vhost - файл с описанием виртуального хоста по шаблону, лежащему в папке с сайтами. На этот файл создаётся симлинк в стандартное для дебиановского апача место - /etc/apache2/sites-avalable. После установки прав на созданные папки происходит вызов a2ensite и перезапуск апача. На скриншоте выше - кусочек такого скелета который получился после работы скрипта - из наутилуса

Read more