среда, 30 марта 2011 г.

Сказ о том, как из ПК часы делались

Как-то в этом месяце, на работе, было принято решение повесить в цехе красивые часы, которые будут показывать единое время для работников цеха, и оповещать их сигналом о началах и окончаниях перерыва. Занимались этим я и MAG_delta.Деньги были выделены, комплектующие были куплены, и тут началось самое интересное...

Сборка ПК

При сборке были использованы следующие комплектующие:
  • Мат. плата ASUS "AT3IONT-I Deluxe"
  • Дешевый 23" монитор от Samsung, собранный в России
  • Простенький корпус mini-ITX
  • VESA крепление для монитора
  • харды, CD-ROM'ы, периферия, прочее...

Монитор

Небольшие проблемы начались с самого начала. Приступив к осмотру пришедшего монитора, был обнаружен небольшой дефект: отверстия для крепления в корпусе были неправильно пробиты (как казалось). Сначала MAG_delta попробовал пробить новые отверстия, и это даже получилось. Отверстия пробиты, все довольны, вроде, можно приступить к следующему шагу. Но не тут-то было :) Оказалось, что если потрясти монитор, там весело что-то гремит. Посмотрев еще раз на заднюю крышку монитора, мы обнаружили, что с внутренней стороны отвалилось одно крепления для VESA держалки. Было решено разобрать монитор и посмотреть, что там за фигня происходит. Монитор не стал быстро сопротивляться и мы увидели красиво запечатанный в металл экран монитора. Очень понравилось. В общем, проблема была решена, железка для крепления приделано обратно, все довольны, монитор собран почти без повреждений (не считая утопленной вглубь лампочки питания). В общем, слава Российской сборке! На этом проблемы с монитором закончились. Начался следующий этап...

VESA крепление

Предыстория: так как в нашем любимом Ф-центре мы VESA креплений не нашли, то было решено купить его перед поездкой на работу. Приехав на савок, не долго ища, мы нашли магазин "Другой Мир" (или как-то так), в котором был богатый выбор креплений. Не долго думая, было решено купить самое-самое большое крепление, чтобы хоть одно из отверстий подошло. А продавец всё хотел втюхать какое то маленькое. Убедив продавца, что нам отлично подойдёт именно самое большое, купили его и поехали на работу )
Приехав на работу, и помучившись с монитором, мы взялись за крепление. И тут всё началось с fail'а - крепление, внезапно, оказалось слишком большим, и закрывало отверстие для VGA кабеля и кабеля питания. В общем, пришлось идти в цех и просить отрезать лишнюю часть крепления. Заодно, показали куда это всё надо вешать. В итоге, крепление было красиво отрезано и хорошо прикручено. На чем эпопея с ним закончилась. Параллельно с этим мы занимались установкой и настройкой системного блока...

Системный блок

Тут началось самое интересное. Был распакован маленький mini-ITX корпус, безжалостно вынут оттуда встроенный блок питания. Была распакована маленькая mini-ITX материнская плата, которая выглядела очень заманчиво, на первый взгляд. Было всё это собрано, подключен НЖМД на 500Гб от сигейта, CD-ROM для установки, 2Гб памяти (меньше не было :) ), включен внешний блок питания для материнской платы, и всё было к решительному моменту включения. Кнопка включения была нажата и... 0 реакции. Еще раз - тот же результат. Пришлось задуматься, что бы это могло быть. Через некоторое время раздумий мы решили, что не хватает питания. Было решено отключить жёсткий диск, оставить только CD-ROM. Со второго раза всё включилось и... вся серверная провоняла первым за этот день убитым CD-ROM'ом. Немного почесав в затылке, было решено проверить всё это на еще одном CD-ROM'е. Скажу сразу, это была плохая идея, так как серверная снова провоняла горелой проводкой. Прошло еще немного времени, мы уже вовсю прорабатывали метод установки ОС с флешки на флешку, возможность использования старого-древнего компа уже, на крайний случай, но MAG_delta было мало - он решил убить еще и жесткий диск :) Хитро подключив питание во время работы злополучного компа, это ему удалось. Так кровожадная материнка приняла очередную, и последнюю, жертву. Мы перешли к следующему шагу...

Установка ОС

Установить на эти кровожадные часы-убийцу было решено самый знакомый и близкий мне дистрибутив - AgiliaLinux. Также он поддерживает легкую установку на флешку, что было очень важно для нас. Так как флешка была всего одна (и та - моя), наш хитрый план был примерно таким: записать установщик на флешку, загрузиться с неё, установить Агилию на эту же флешку, дальше - по обстоятельствам. Внезапно, оказалось, что всё это вполне реально и возможно, и даже работает. Загрузившись с флешки, мы смогли лицезреть приглашение логина. Теперь немного о программной части...

Программное обеспечение

Для самого показа часов было испробовано множество вариантов, даже conky, но мы остановились на xdaliclock, который был в репозитории (правда, только для 64-х битного варианта, но собрать пакет - дело не долгое). Были подобраны опции запуска, настроен автостарт. При помощи пользователя "medved" jabber конференции agilialinux был быстро настроен автовход в иксы под нужным пользователем, в общем, всё это само запускалось и работало. Дальше, мы собрали вместе системный блок, монитор, кучу проводов и ИБП и понесли всё это в цех.

Сборка всего вместе и установка

Придя на место, мы еще раз подивились красиво установленному и отрезанному креплению, водрузили туда монитор, поставили в соседнее помещение системник с ИБП, соединили всё это и включили... загрузка пошла, как это не удивительно :) AgiliaLinux загрузился, но максимальное разрешение экрана было - 1024х768. Как оказалось, проблема была в предварительно заказанном VGA кабеле, который брался "с запасом". В общем, его длина была 30 метров, это говорит само за себя). Плюнув на это дело, поставили разрешение (пришлось бегать за клавой-мышью) 800х600, чтобы наверняка, поправили параметры запуска часов и взялись за протягивание сетевого кабеля. Но через 10 минут было обнаружено, что благодаря настройкам энергосбережения монитор выключается сам через эти самые 10 минут. В спешке настроив сеть, я записал магические строчки

xset s off &
xset -dpms &
xset s noblank &

в autostart.sh, и эту проблему тоже удалось решить. На этом можно считать первую часть настройки компочасов оконченной. Ждите новостей на следующей неделе.

Итоги

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

"Слайды" :)







С этими, некоторыми другими фото Вы можете ознакомиться по этой ссылке :)

понедельник, 14 марта 2011 г.

Эффективное управление вебкамерой с использование motion + bluetooth

"Everything is better with bluetooth" (c) The Big Bang Theory.

Предисловие

Для наблюдения за посещением серверной я уже больше года использую отличную программу motion. Единственная сложность, возникающая при использовании - не забыть выключать видеонаблюдение при входе в серверную и включать при выходе из серверной (что делалось по ssh). Недавно мне это надоело, тем более, что под руку попал USB донгл с bluetooth.

Немного магии shell

после этого меня посетила интересная мысль. Так как я и мой друг и напарник в одном лице mag_delta (спасибо ему за техническую базу :) ) имеем телефоны с поддержкой bluetooth, то почему бы не сделать автоматическое включение камеры, когда оба наших устройства находятся вне области доступности, и автоматическое выключение, как только мы в ней появляемся? Реализовать это все было задумано на bash. В общем, после пары минут написания и тестирования, я написал вот такой простенький скрипт:


#!/bin/sh
#Переменная,в которой хранится предыдущее состояние (в серверной мы или нет)
HERE=0
#Бесконечный цикл
while [ 1 -eq 1 ]; do
#Сканирование на предмет наличия наших телефонов
hcitool info XX:XX:XX:XX:XX:XX > /dev/null
V1RUS=$?
hcitool info XX:XX:XX:XX:XX:XX > /dev/null
MAG=$?
#В случае, если хоть один из телефонов в области досигаемости
if [ $V1RUS -eq 0 -o $MAG -eq 0 ] ; then
#Выводим на stdout сообщения...
echo "HE IS HERE"
if [ $V1RUS -eq 0 ] ; then
echo "V1RUS HERE"
fi
if [ $MAG -eq 0 ] ; then
echo "MAG HERE"
fi
#И, если предыдущее состояние равно нулю (нас здесь не было, а теперь появились), то убиваем motion, останавливая видеонаблюдение
if [ $HERE -eq 0 ]; then
echo "Stopping motion..."
killall motion
fi
#Устанавливаем переменную в значение 1 (мы здесь)
HERE=1
else
#Тоже самое, только включаем motion, если мы перед этим здесь были
echo "HE IS NOT HERE"
if [ $V1RUS -eq 1 ] ; then
echo "V1RUS NOT HERE"
fi
if [ $MAG -eq 1 ] ; then
echo "MAG NOT HERE"
fi

if [ $HERE -eq 1 ]; then
echo "Starting motion..."
motion
fi
HERE=0
fi
#Для избежания разных неприятных эффектов, устанавливаем интервал сканирования в примерно 10 секунд.
sleep 10
done


Итого:

Этот простой скрипт, хоть и написан в спешке, может быть сколь угодно расширен (например, можно добавлять данные о посещаемости в БД :)), а также он экономит кучу времени и нервов. Надеюсь, он кому-нибудь пригодится.

PS.

Вы можете спросить, почему используется hcitool info MAC_ADDRESS, а не hcitool scan? Ответ прост: bluetooth на телефоне может быть в скрытом режиме, и hcitool scan его не обнаружит, в то время как hcitool info найдет его.

среда, 2 марта 2011 г.

Семь смертных грехов

AntRulkAnt'у посвещается...

  • Коммуникабельность
  • Активность
  • Желание работать в команде
  • Целеустремлённость
  • Быстрообучаемость
  • Исполнительность
  • Стрессоустойчивость

По мотивам http://juick.com/1243994

воскресенье, 13 февраля 2011 г.

Установка прошивки dd-wrt на роутер Asus WL500G Premium v2


Сегодня с утра я наконец нашел время прошить свой роутер прошивкой dd-wrt. Процесс прошивки проходил на компьютере с ОС GNU/Linux. Так как я не смог быстро найти адекватного руководства, я решил написать данный пост :)

Шаг 1. Подготовка

Итак, что нам потребуется:
  • Файлы прошивки
  • Клиент tftp
  • Компьютер с ОС GNU/Linux, подключенный через ethernet кабель к роутеру

Файлы прошивки

Для установки dd-wrt на роутер Asus WL500G Premium V2 требуется несколько файлов:

Клиент tftp

Следующий шаг - установка клиента tftp. Скорее всего, пакет с tftp называется tftp-hpa.

Компьютер с ОС GNU/Linux, подключенный через ethernet кабель к роутеру

После того, как клиент tftp установлен, необходимо настроить статический ip адрес 192.168.1.2 (например, командой

ifconfig eth0 192.168.1.1
выполненной с правами пользователя root).

Внимание: прошить роутер через wifi не получится, даже не пробуйте :)

Вот и все, предварительная подготовка окончена. Пришло время заняться непосредственно прошивкой.

Шаг 2. Прошивка

Сам процесс прошивки не очень сложен. Главное - не спешить. Для начала, необходимо проверить, что все требования первого шага выполнены. Итак, приступим:

  • Скопируйте все файлы из шага 1 в одну директорию (например, /home/user/asus/), и перейдите в нее.
  • Загрузите роутер в режим восстановления (для этого необходимо отключить кабель питания от роутера, подождать 30 секунд, нажать и удерживать кнопку reset, включить питание, не отпуская кнопку reset). Удерживайте кнопку reset до тех пор, пока не замигает лампочка питания на лицевой панели роутера. После этого можете отпустить кнопку reset.
  • Проверьте, назначен ли компьютеру IP адрес 192.168.1.2 (если нет, то выполните команду ifconfig eth0 192.168.1.2/24 с правами пользователя root).
  • Далее, необходимо загрузить файл wl500g-clear-nvram.trx в роутер. Для этого, выполните следующую команду (подразумевается, что Вы находитесь в директории с файлами прошивки):
    $ tftp 192.168.1.1
    mode binary
    put wl500g-clear-nvram.trx
  • В течении короткого промежутка времени (5-15сек.), появится приглашение ввода команд клиента tftp. Введите туда quit. После этого необходимо подождать 5 минут, пока прошивка запишется в память роутера. На самом деле, прошивка обычно записывается не более 2-3 минут, но лучше подождать лишнюю пару минут, чем получить из роутера кирпич. После этого можно отключать питание.
Далее, необходимо тем же путем загрузить прошивку, хранящуюся в файле wl500g-recover.trx. Для этого надо сделать тоже самое, что и при загрузке файла wl500g-clear-nvram.trx. Вкратце:
  • Перезагружаем роутер в режим восстановления.
  • Проверяем, есть ли статический IP, если нет, то устанавливаем.
  • Загружаем прошивку.
  • Отключаем питание.

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

Теперь настал черед минимальной прошивки dd-wrt для роутера, через которую мы загрузим полноценную прошивку, с которой уже можно будет работать. Процесс заливки все тот же, только не забудьте проверить, что:
  • Файл с прошивкой называется dd-wrt.v**_asus.trx. Внимательно проверьте, что расширение файла - .trx, иначе роутер может стать кирпичом.
  • Необходимо подождать 5 минут перед выключением после окончания загрузки прошивки

Шаг 3. Окончание

Если вы следовали инструкции, и все прошло нормально, то осталось включить роутер в обычном режиме, получить IP по DHCP и зайти по адрему http://192.168.1.1/ . Там вы увидите просьбу ввести логин/пароль для доступа в веб-интерфейсу.

После установки логина и пароля необходимо выбрать пункт меню Firmware Upgrade, выбрать пункт "Reset to Default settings" параметра "After flashing, reset to", указать файл с полной прошивкой (dd-wrt-v24_mega_generic.bin). Далее необходимо нажать кнопку Upgrade, и пойти пить чай. Лучше не трогайте ничего (вообще ничего), до того момента, пока роутер не перезагрузится.

После перезагрузки, зайдя на адрес http://192.168.1.1/ Вы увидите просьбу ввести логин/пароль для доступа к веб-интерфейсу. После его ввода, в Ваших руках окажется готовая к работе прошивка dd-wrt. На этом все.

воскресенье, 23 января 2011 г.

Agilia wants YOU! Как стать маинтейнером, или Ленинский призыв. (репост)

Оригинал был на МыЛинупсе, это обновлённый вариант :)

Вы молоды, веселы и вам нечем заняться?… Ой, блин, не то… А, вот!

Краткая и подробная инструкция о том, как стать маинтейнером и членом команды самого свободолюбивого дистрибутива Этой Страны.

Грязнейший ПЕАР included, читать на свой страх и риск!

Чтобы стать рабом навекимаинтейнером AgiliaLinux, нужно проследовать по данному гайду от начала до конца, собственно :) Маинтейнерство — это очень тайное ремесло, которое передаётся из поколения в поколение: не забудьте показать этот пост своему сыну, когда он станет совершенноLinuxным!

Шаг 0: А можно ли?

 Может ли стать маинтейнером Вася Пупкин? Да, если Вася:

  1. холостой и бездетный белый мужчина…ой, не тот список, ща достану нужный…вот!
Так вот, чтобы Вася мог подумать о карьере маинтейнера, он должен:

  1. использовать Linux, и не быть новичком. Новичков мы ждём в пользователях :)
  2. уметь работать с bash-скриптами
  3. иметь представление о том, как собирается софт из исходников
  4. знать, что такое patch и diff (желательно, но нифига не обязательно)
  5. иметь достаточное количество свободного времени, не только своего, но и процессорного
Если вы соответствуете этим требованиям, смело читайте дальше, если же нет — все равно читайте дальше: маинтейнерство и работа в команде очень здорово повышают знания, проверено собственным (подчас горьким) опытом.

Лирика: вообще, неким самоэкзаменом можно считать установку генты без заглядывания в хендбук. Если вы её прошли — вам уже ничего не страшно. Ах да, "без хендбука" = "чисто по мозгам", а не с гуглем и матами ;)

Шаг 0,5: А надо ли?

Быть маинтейнером это почётно, круто, повышает ЧСВ и всё такое, но! Быть маинтейнером — весьма ответственно. И это ответственность перед людьми, в самую первую очередь. Ты будешь тем, кто приносит обновления Супер-Пупер-Программы людям, именно на тебя они надеются. И если ты забьёшь на это, то много-много людей будет испугано и разочаровано. Ты готов нести ответственность за пользователей?

Став маинтейнером, ты принимаешь на себя ответственность за программу. Лучше всего, когда ты маинтейнишь то, чем пользуешься ежедневно (иначе получается как в Debian — "скорее в холодильнике вскипит чайник, чем обновятся редко используемые пакеты"). Ты готов отслеживать обновления программы, которую маинтейнишь, и оперативно обновлять её?

У дистрибутива есть две архитектуры: i686 и x86_64. Собрав пакет под одну архитектуру, ты обязан собрать его под другую. Ты готов плясать с виртуалкой для другой архитектуры?

Лирика: Этот принцип соблюдался ранее очень не всегда, вследствие чего мы до сих пор разруливаем проблемы и рекомендуем новичкам x86_64–образы. К сожалению, даже ко второй бете в userland-е (репозиторий с пакетами, не входящими в основную систему) достаточно расхождений. Но благодаря гранту данная ситуация продлится недолго.

Баги программы — твои баги, и ты должен разруливать их. Ты обязан понимать, какой баг является багом самой программы, а какой — багом именно твоей сборки. Ты обязан следить за багтрекером и фиксить баги. Если ты программист — пробуй решать баги, связываться с апстримом, слать туда патчи, которые чинят баги. Если ты не программист — следи за сборкой, делай её максимально работоспособной. Не брезгуй патчами из других дистрибутивов, но проверяй их: не все
йогурты патчи одинаково полезны. Ты готов гоняться за жуками с мухобойкой?

Ты обязан забыть про дистросрачи. AgiliaLinux должна стать твоим единственным и неповторимым Linux-домом. Ты можешь использовать любые ОС и дистрибутивы в любых целях, но твоей ОСНОВНОЙ системой, в которой ты проводишь больше всего времени, должна стать Агилия. Ты готов сделать окончательный выбор дистрибутива и остаться верным ему до конца маинтейнерских дней своих?

Если ты ответил "да" на все вопросы — читай дальше, если у тебя есть затруднения — читай дальше, если ты хотя бы на один из вопросов ответил "нет" — маинтейнерство не для тебя, но мы будем рады увидеть тебя в пользователях (и поверьте, очень много пользователей после определённого времени ответили для себя на все пять вопросов "да", и присоединились к нам).

 Шаг 1: Подготовка инструментария

Что нужно, чтобы стать маинтейнером?

  1. Установить AgiliaLinux (здесь вы можете её скачать без смс, капчи и регистрации)
  2. Прочитать документацию
  3. Попробовать собрать нужный пакет
  4. Связаться с нашей командой
Начнём с установки: её осилит каждый. Устанавливать можно любой вариант, который вам подходит. Помните, что KDE и GNOME могут привносить в собираемые программы лишние зависимости, и если вы собираете в них программу, которая не зависит от DE, следите, чтобы зависимости KDE/GNOME (особенно этим грешит GNOME!) не попали в универсальный пакет. Если они представляют некоторый важный функционал, но несут ОЧЕНЬ много зависимостей, попробуйте собрать два пакета: для DE и для не-DE систем: (пример: file-roller и file-roller-gnome содержат разные зависимости под разные случаи).

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

Шаг 2: Документация

Главным справочным средством у нас является наша местная Вики-система. PDF-ок нету! Вот то, что должно быть прочитано:

После прочтения всего этого можно начинать работать с mkpkg — нашим средством сборки пакетов. Перед самой первой сборкой выполните mpkg-maintainer --set ИМЯ E_MAIL — тем самым в ваших собранных пакетах будут находиться ваш ник и e-mail.

Шаг 3: Вступление в команду

Вы можете в любой момент зайти в нашу Jabber-конференцию agilialinux@conferences.jabber.ru, она предназначена как для пользователей, так и для разработчиков. Заодно почувствуете наш дружный коллектив троллей. Там можно просто общаться, задавать вопросы и знакомиться с пользователями/пользовательницами :) Ну а самое интересное именно в том, что приём в команду идёт именно так. Порядок такой: у вас есть на руках пакет A, которого нету в репозитарии, и вы хотите его залить туда и маинтейнить. Вы отдаёте пакет нашему главе aix27249, он его проверяет, и если он хороший, заливает в репозитарий, при этом принимая решение — делать ли вас маинтейнером или пока что нужно подождать (это зависит от многих причин, весьма субьективных подчас). Обычно после этого вам выдаётся инвайт — право регистрации как маинтейнера в нашем репозитарии. После регистрации у вас есть право заливать пакеты в тестовый репозитарий. Если вы показали свою состоятельность как маинтейнер, вам выдаётся обычный доступ в репозитарии. Особо везучие и те, кто связаны с DE/WM, в конце концов, попадают в CORE — подмножество маинтейнеров, которые могут работать с пакетами, выходящими на релизных дисках (те самые DVD, которые качают пользователи, полностью состоят из пакетов работы CORE-маинтейнеров). Это высшая ступень иерархии :)

Если вы не боитесь трудностей и хотите вступить в самую весёлую, умную, сообразительную, свободную и просто крутую команду, которую я встречал…

WELCOME!

четверг, 20 января 2011 г.

Добавление кнопок публицации сообщения в блоге на blogspot

Для этого надо: зайти в админку блога, переходим на вкладку "Дизайн" → "Элементы страницы". Далее, смотрим на картинку, и нажимаем на ссылку 1, в появившемся окне устанавливаем галку на чекбоксе 2. Всё, нажимаем "сохранить", окно закрывается, нажимаем "сохранить" еще раз и радуемся новым кнопкам публицации сообщения.

Два самых распространненых мифа об GPL лицензии

Очень часто я вижу серьёзные заблуждения людей в том, что разрешает и не разрешает лицензия GPL. Два самых часто встречающихся мифов выглядят так:

  • Весь свободный софт обязательно должен быть бесплатным
  • Нельзя продавать чужой свободный софт

Пришло время развеять эти заблуждения.

Миф 1. Весь свободный софт обязательно должен быть бесплатным

Многие люди думают, что свободный софт (распространяющийся под лицензией GPL, в большинстве случаев), обязательно должен быть бесплатным. Но это не так. Свободный софт можно продавать за любую цену, любому покупателю, который согласится приобрести ПО (отдельно, или в составе другого продукта). В преамбуле GPL написано:

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

Что можно перевести как:

Говоря о свободном программном обеспечении, мы имеем в виду свободу, а не безвозмездность. Настоящая Стандартная Общественная Лицензия разработана с целью гарантировать вам право распространять экземпляры свободного программного обеспечения (и при желании получать за это вознаграждение), право получать исходный текст программного обеспечения или иметь возможность его получить, право вносить изменения в программное обеспечение или использовать его части в новом свободном программном обеспечении, а также право знать, что вы имеете все вышеперечисленные права.

Миф 2. Нельзя продавать чужой свободный софт


Очень часто можно увидеть возгласы негодования людей, которые видят, как сторонние фирмы продают такие известные продукты, как Gimp, Firefox, Open Office.org и другие под измененным названием. К сожалению (или счастью, кому как), это никак не запрещается лицензией GPL. Главное при этом, чтобы продавцы не изменяли список авторов, а также были готовы предоставить исходный код всем, кто приобрел их продукт (подробнее об этом далее). Почему это возможно? Ответ прост — лицензия GPL подразумевает передачу прав на исходный код всем, кто получил этот исходный код. То есть, скачав исходные коды свободного ПО, например, GIMP, вы являетесь полноценным владельцем исходного кода (вы приобретаете ПО, а не право им пользоваться) под лицензией GPL. А это подразумевает то, что вы можете свободно изменять, распространять, продавать это ПО. Вот цитата из GPL (пункт 2):

You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: ...

Вот перевод этой части на русский язык:

2. Лицензиат вправе модифицировать свой экземпляр или экземпляры Программы полностью или любую ее часть. Данные действия Лицензиата влекут за собой создание произведения, производного от Программы. Лицензиат вправе изготовлять и распространять экземпляры такого произведения, производного от Программы, или собственно экземпляры изменений в соответствии с пунктом 1 настоящей Лицензии при соблюдении следующих условий: ...

Выводы

Программа под GPL лицензией — не бесплатная программа. И, получив программу под лицензией GPL, вы можете делать с ней всё, что не запрещено GPL — продавать, изменять, запускать, распространять.

пятница, 14 января 2011 г.

ISPManager session save path

Если вдруг при использовании ISPManager и PHP в режиме CGI (FastCGI) скрипты будут ругаться на невозможность записать сессию:

[Fri Jan 14 20:33:36 2011] [warn] mod_fcgid: stderr: PHP Warning: Unknown: open(/var/lib/php/session/sess_dfb2m61u4ugabc729c3pl8ioc4, O_RDWR) failed: Permission denied (13) in Unknown on line 0
[Fri Jan 14 20:33:36 2011] [warn] mod_fcgid: stderr: PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0
[Fri Jan 14 20:33:36 2011] [warn] mod_fcgid: stderr: PHP Warning: session_start() [function.session-start]: open(/var/lib/php/session/sess_dfb2m61u4ugabc729c3pl8ioc4, O_RDWR) failed: Permission denied (13) in /var/www/xxx/yyy.php on line 2

То в файле /etc/php.ini надо закомментировать строку

session.save_path = /var/lib/php/session/

После этого надо перезапустить веб сервер, и всё заработает.

понедельник, 10 января 2011 г.

Mysql регистр таблиц

Для отключения регистрозависимых названий таблиц необходимо в файл /etc/my.cnf в секцию mysqld добавить параметр lower_case_table_names = 1

пятница, 7 января 2011 г.

SnapFly

В рамках изучения питона была форкнута софтина adeskmenu. Теперь у меня есть полезный опыт, а у сообщества мощное и легкое GTK меню SnapFly:)