Обновить

WP Cumulus для Joomla и Shop-script

Ввод

Недавно я начал работать над одним продуктом на основе Webasyst Shop-Script. Система довольно интересная, но и довольно сложная (показалась мне на первый взгляд), но об этом позже.
Одной из первых задач было сделать красивое облако тэгов. Таким красивым оказался продукт WP Cumulus, но он для Wordpress.
Но оказалось, что ничего сложного там нет. И что его можно адаптировать для любой cms.
А если не мучаться с интерфейсом администратора, то вообще все просто.
Читать дальше →

несколько слов о pfsense

image

Хочу сказать несколько о слов об этом дистрибутиве. Задача стояла установить шлюз в офис, на котором будет стоять сквид, фтп-сервер (файловое хранилище с доступом из дома), фаервол, считалка трафика. Для этого была выделена неплохая машинка Intel Celeron E1200@1.60GHz, 2Gb RAM, жесткий диск на 160Gb. Вначале была идея поставить freebsd 7.0 и установить все из портов, но потом было решено поэкспериментировать с pfsense.
Читать дальше →

ssmtp и уведомления о системных событиях по sms

Итак.Сегодня ночью ко мне пришла мысль что уж очень сильно хочется чтобы уведомления о завершении процесса emerge приходили мне смской.Немного погуглив я нашел решение, юзать ssmtp + небольшой скриптик.

emerge -av mail-mta/ssmtp [обязательно с флагом ssl]
Поидее оно должно потащить за собой и mail-client/mailx
Итак.Дальше нужно перейти к файлу конфигурации:

nano /etc/ssmtp/ssmtp.conf

# GMAIL configuration
mailhub=smtp.gmail.com:587
AuthUser=мыло@gmail.com
AuthPass=пароль
UseSTARTTLS=YES
UseTLS=YES

# The full hostname
hostname=gmail.com

# Are users allowed to set their own From: address?
# YES — Allow the user to specify their own From: address
# NO — Use the system generated From: address

FromLineOverride=YES

Со строчкой hostname=gmail.com я изрядно намучался, несколько не ясно что такое хостнейм, то ли оно хочет мой хостнейм, то ли гмейла, если указать свой собственный то бишь localhost, то дело принимает совсем неинтересный оборот: при отправке почты намертво вешается сеть.

А теперь сам скриптик:

#!/bin/sh
# Запись статуса завершения команды.
[ $? -eq 0 ] && RESULT="PASS" || RESULT="FAIL"

# То что в кавычках заменить на свой адрес
SMS_ADDR="123456789@sms.beemail.ru"

LAST_PKG="$(tac /var/log/emerge.log | awk '$2 == ">>>" {print $4,$5,$6,$7; exit;}')"
CFG_MODS="$(find /etc -iname '._cfg????_*' | wc -l)"

mail -s"Emerge Completed" $SMS_ADDR <<-EOM ${RESULT} ${LAST_PKG} ::: ${CFG_MODS} config updates pending $* EOM


Дальше скрипт можно добавить в /usr/local/sbin/

И запускать emerge -avuDN world; scriptname

Игры на Flash

Не так давно тут проскакивал топик со ссылкой на игру, где надо вырастить башню из, казалось бы, совершенно не сочетаемых между собой предметов. Вырастить я ее, конечно, вырастил, а пока растил, вспомнил о подобных играх 4х-5ти-летней давности. Хотя, их и играми-то назвать сложно. Просто есть некие объекты, с которыми можно совершать некие действия и в зависимости от результата действовать дальше. Хотя, элемент развлечения там, безусловно, присутствует.
Читать дальше →

Создание arm-окружения в Debian GNU/Linux «lenny» с помощью qemu

Моя статья является переработанным материалом, который можно найти здесь:
http://www.opennet.ru/base/sys/linux_arm_qemu.txt.html
Спасибо автору и переводчику!

Устанавливаем необходимые пакеты:
host# aptitude install qemu debootstrap nfs-kernel-server

debootstrap — позволяет создать базовую систему Debian, а также является простым способом создания chroot и виртуальных машин.
qemu — эмулятор компьютера, позволяет эмулировать следующие архитектуры:
— PC (x86 or x86_64 processor)
— ISA PC (old style PC without PCI bus)
— PREP (PowerPC processor)
— G3 BW PowerMac (PowerPC processor)
— Mac99 PowerMac (PowerPC processor, in progress)
— Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
— Sun4u (64-bit Sparc processor, in progress)
— Malta board (32-bit and 64-bit MIPS processors)
— ARM Integrator/CP (ARM)
— ARM Versatile baseboard (ARM)
— ARM RealView Emulation baseboard (ARM)
— Spitz, Akita, Borzoi and Terrier PDAs (PXA270 processor)
— Luminary Micro LM3S811EVB (ARM Cortex-M3)
— Luminary Micro LM3S6965EVB (ARM Cortex-M3)
— Freescale MCF5208EVB (ColdFire V2)
— Arnewsh MCF5206 evaluation board (ColdFire V2)
— Palm Tungsten|E PDA (OMAP310 processor)

nfs-kernel-server — поддержка для сервера NFS на уровне ядра.

Создаем директорию где будет лежать наша система.
host# mkdir /home/user/arm-sys

Запускаем debootstrap, c ключом --foreign выполняется только первая часть установки.
host# debootstrap --foreign --arch arm lenny /home/user/arm-sys
host# cd /home/user/arm-sys
host# cp /etc/passwd etc/passwd
host# cp /etc/shadow etc/shadow
host# cp /etc/group etc/group
host# echo "proc /proc proc defaults 0 0" > etc/fstab
host# echo "192.168.10.1:/home/user/arm-sys / nfs defaults 0 1" >> etc/fstab


Расшариваем папку через NFS и добавляем соответствующую запись /etc/exports:
/home/user/arm-sys 192.168.10.5(rw,no_root_squash,no_subtree_check,sync)

Экспортируем файловую систему:
host# exportfs -a

Скачиваем http://bellard.org/qemu/arm-test-0.2.tar.gz, в архиве находится ядро и образ initrd рабочей arm-системы.

Распаковываем в /home/user/arm-test.

Создаём сценарий такого вида:

#!/bin/sh

console="ttyAMA0" # serial console
nfsserver="192.168.10.1" # address of NFS server
nfsdir="/home/user/arm-sys" # exported share where debian/arm is installed
address="192.168.10.5" # address for guest server
gateway="192.168.10.1" # default gateway
netmask="255.255.255.0" # subnet mask
hostname="arm.home" # hostname for guest server
device="eth0" # interface that guest server will use
mem=256 # memory for guest server in Mb
ipinternet="192.168.1.64" #Адрес интерфейса, через который доступен интернет на машине-хосте

kernel="/home/user/arm-test/zImage.integrator" # arm kernel
initrd="/home/user/arm-test/arm_root.img" # arm initrd
nfsopts="rsize=1024,wsize=1024,hard,intr,tcp,nolock" # nfs options
consoleopt="console=$console"
nfsrootopt="nfsroot=$nfsserver:$nfsdir,$nfsopts"
ipopt="ip=$address::$gateway:$netmask:$hostname:$device"

echo 1 > /proc/sys/net/ipv4/ip_forward & #Включение перенаправления пакетов
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o $device -j SNAT --to-source 192.168.1.64 & #Включение NAT и будет интернет

qemu-system-arm -net nic -net tap,ifname=tap0 -m $mem \
-kernel $kernel -initrd $initrd \
-append "$consoleopt root=/dev/nfs $nfsrootopt $ipopt $initsin"


Необходимо поправить в файле /etc/qemu-ifup — ip адрес хоста.
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1

на
sudo -p "Password for $0:" /sbin/ifconfig $1 192.168.10.1

Теперь запускаем систему arm:

host# ./start-qemu-arm

Гостевая машина загрузится и запустит оболочку bash.
Уже в виртуальной машине делаем следущее:

Логинимся под root'ом без пароля.

Перенастраиваем сетевой интерфейс, монтируем корень будущей системы, делаем её корневой для текущей системы, монтируем /proc.
guest# ifconfig eth0 192.168.10.5
guest# mkdir /mnt
guest# mount -t nfs -o rsize=1024,wsize=1024,nolock 192.168.10.1:/home/user/arm-sys /mnt
guest# cd /mnt
guest# chroot .
guest# mount /proc


Теперь запускаем второй этап debootstrap и завершаем установку:
guest# cd /
guest# ./debootstrap/debootstrap --second-stage


Этот процесс потребует времени, так как эмулятор не особенно быстр. После завершения установки отредактируйте такие файлы, как
/etc/hostname и /etc/resolv.conf.

В сценарии, который был сделан ранее, заменим строку:
-kernel $kernel -initrd=$initrd \
на
-kernel $kernel \

Делаем запуск готовой гостевой машины:
host# ./start-qemu-arm

Сделано не очень красиво, но работать должно.

Требования и правила хорошего тона для HTML CSS верстки дизайн макетов

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

  1. Кроссбраузерная совместимость: ie 6.0+, ff 2+, opera 9.0+, safari, chrome
  2. Семантика кода

    • Верстка без таблиц. Таблицы должны использоваться для представления табличных данных
    • Разделение контента и оформления: контент в HTML, дизайн в CSS
    • Использовать HTML теги по назначению
    • Структура сайта должна состоять из трех основных блоков: header, content, footer

  3. Код должен соответствовать стандартам W3C т.е. без ошибок и костылей
  4. При «нарезке» графики выбирать оптимальный формат (jpg, gif, png). уровень компрессии выбирать так, чтобы цвета не «плыли» и не было «грязи»
  5. DOCTYPE XHTML 1.0 Strict
  6. Предусмотреть возможность изменения объемов контентного содержимого блоков как в меньшую так и в большую сторону
  7. Правила хорошего тона
    • HTML код должен быть простым, избегать сложный конструкций
    • HTML код должен быть читаемым, использовать иерархию вложенности и короткие комментарии к основным блокам
    • Меню делать списком
    • Чекбоксы и радиобатоны верстать с LABEL
    • Указывать размеры картинок в HTML
    • В блоке текстового контента не использовать классы типа для тегов, использовать наследование
    • Стили должны быть написаны для основных тегов, деже если их нет в дизайне (h1-h6, p, a, ul, ol, table, fieldset)
    • Таблицы стилей должны быть читаемыми: строчное написание стилей, пустые строки между блоками, комментарии для крупных логических блоков
    • Для названия классов использовать английский язык, давать логические осмысленные названия, использовать микроформаты
    • В именах графических файлов использовать английский язык
    • Страница должна сохранять нормальный вид при отключеной загрузке картинок
    • Активная иконка или пункт меню не должны быть ссылкой
    • Одинаковые блоки должны иметь Одинаковые код (не желательно использовать class=«last» для меню и д.р.)
    • Придерживаться принципов ооп-верстки и вёрстки независимыми блоками
    • Обеспечить нормальное поведение страниц при увеличении масштаба в браузерах как в большую, так и в меньшую сторону
    • Использовать относительные единицы для размеров шрифтов — em, %



Комментарии и дополнения принимаются.

Выбор CASE-средства: критерии и методика сравнения

На сегодняшний день проблема выбора наиболее подходящего и полностью удовлетворяющего поставленным целям и задачам CASE-средства представляется максимально актуальной в виду их широкого разнообразия и огромного спектра решений, который готов предложить разработчик для удовлетворения потребностей автоматизации. Целью данной статьи является ознакомление с существующими средствами, а также выделение наиболее значимых критериев для проведения сравнительного анализа. image
Читать дальше →

Объединение FS в Linux с балансировкой записи

MHDDFS, UnionFS, LVM, и зачем вообще все это надо


С приобретением второго веника к домашнему серверу понадобилось совместить старую и новую ФС. Попробовал разные варианты и остановился на MHDDFS.
Unionfs, mhddfs, lvm позволяют использовать несколько жестких дисков в Linux как одну файловую систему. UnionFS и MHDDFS «накладывают» файловые системы друг на друга, LVM же работает по принципам RAID.
При этом MHDDFS позволяет балансировать диски при записи, выбирая для новых файлов диск с наибольшим количеством свободного места. Если в процессе записи место на диске закончится, записанная часть файла будет перенесена на другой носитель без прерывания процесса записи, а перенос останется незаметным для приложения. А если один из дисков безвременно прекратит свое существование, данные не потеряются целиком, как с LVM или RAID.

Настройка mhddfs на Debian/Ubuntu


В моем случае имеются /dev/sdb1 и /dev/sdb2, которые нужно было объединить в один диск.

Устанавливаем, создаем точки монтирования и монтируем диски по одному:
Copy Source | Copy HTML
  1. root@punkoff-desktop:/# aptitude install mhddfs
  2. root@punkoff-desktop:/# cd /mnt
  3. root@punkoff-desktop:/mnt# mkdir a b c
  4. root@punkoff-desktop:/mnt# mount /dev/sdb1 a
  5. root@punkoff-desktop:/mnt# mount /dev/sdb2 b
  6.  

А теперь — самое интересное:
Copy Source | Copy HTML
  1. root@punkoff-desktop:/mnt# mhddfs a,b c


Теперь можно протестировать файловую систему. Размер sdb1 и sdb2 — по 400 Mb. Размер video.avi — около 320 Mb.
Copy Source | Copy HTML
  1. root@punkoff-desktop:/mnt/c# cp ~/video.avi video1.avi
  2. root@punkoff-desktop:/mnt/c# cp ~/video.avi video2.avi
  3. root@punkoff-desktop:/mnt/c# ls
  4. video1.avi
  5. video2.avi
  6. root@punkoff-desktop:/mnt/c# ls ../a/
  7. video1.avi
  8. root@punkoff-desktop:/mnt/c# ls ../b/
  9. video2.avi

Видно, что файлы записались по одному на диск.

Размонтировать ФС:
Copy Source | Copy HTML
  1. root@punkoff-desktop:/mnt# fusermount -u c


Строка fstab для mhddfs:
Copy Source | Copy HTML
  1. mhddfs#/mnt/a,/mnt/b /mnt/c fuse defaults 0 0
  2.  

Нужно отметить, что mhddfs объединяет не диски, а директории.

Игровая революция OnLive

Каждый PC-геймер не раз проклинал технический прогресс и разработчиков игр, заставляющих нас обновлять своих железных друзей. Чуть ли не каждую неделю анонсируется очередная игра, которая обещает поставить на колени наши видеокарты и расплавить процессоры своими красотами. Суммы, которые тратит на апгрейд среднестатистический геймер плохо вписываются в семейный бюджет. А что делать? Поиграть в Crysis на максимальных настройках с ультра-сглаживанием хочется всем…

А как насчет того, чтобы играть в любую игру с качеством на уровне PS3, пусть даже на нетбуке с процессором Atom? Легко! Встречайте OnLive!
Читать дальше →

bash-сценарий: отчистка от мусора

все началось с того что я распаковал архив…
Да не просто распаковал, а распаковал в исходную папку, где и так было много мусора.
а архив был не маленький и не из одного файла состоящий, поэтому искать каждый файл по отдельности мне было лень.
был я маленький и глупый (хотя, что изменилось?) сидел тогда под ubuntu'ой, почти не знал bash и сам не писал сценарии.
И вот тогда у меня родилась идея о том чтобы написать скрипт который будет искать файлы из одной директории, находящиеся в другой директории. Ну родилась мысль и родилась, я не особо к ней прицепился и все таки удалил файлы, которые нашел (а нашел не все, как потом выяснилось).
Читать дальше →

Настройка HP LaserJet P3005 в Debian GNU/Linux «lenny»

Оговорюсь сразу, настраивался принтер для удалённой печати, через CUPS. Принтер HP LaserJet P3005 подключён к рабочей станции с установленной Windows XP. Настроен и проверен в работе. Настроен общий доступ к нему, и разрешён доступ пользователю printeruser, с паролем printerpassword.

Для печати из линукс я использую CUPS, мощная и простая в настройке система печати, поддерживающая большое количество принтеров и систем печати.

Сведения о принтерах работающих в Linux и качестве драйверов для них, можно найти здесь и на сайте CUPS.

Устанавливаем:
$ sudo aptitude cups

Не используйте в сетевых именах принтеров пробелов и проблем возникнуть недолжно.

Вообще пути тут два:

* Использование LPD
* Использование SMB (Samba)

Для использование LPD необходима установленная в Windows «Служба поддержки печати UNIX». Это пожалуй минус, так как придётся её установить на все компьютеры к которым подключены принтеры. В остальном настройка тривиальна.

Запускаем браузер в адресной строке пишем:
http://localhost:631/

На вкладке Administration, в разделе Printers, нажимаем кнопку «Add Printer».
В разделе «Add New Printer» заполняем данные принтера.
В разделе Device выбирайте «LPD/LPR Host or Printer».
В разделе Device URI, в текстовое поле пишите адрес принтера «lpd://hostname/printername».
hostname — имя или ip-адрес компьютера к которому подключён принтер;
printername — сетевое имя принтера.
В разделе «Make/Manufacturer» выбираем фирму — производителя принтера.
В разделе Model/Driver, в окне Model выбираем пункт «HP LaserJet Series PCL 6 CUPS (en)», нажимаем «Add Printer».
При необходимости изменяем параметры принтера, нажимаем «Set Printer Options».
После небольшой задержки происходит переход на страницу с принтером. Оттуда можно послать на печать тестовую страницу, нажав «Print Test Page».

Настройка печати через CUPS с использованием SMB не сложнее, хотя и имеет свои особенности. Для этого способа не нужно устанавливать дополнительные службы в Windows, что может быть важным если есть доступ только к печати.

Для использования этого способа необходимо установить smbclient:
$ sudo aptitude smbclient

Запускаем браузер в адресной строке пишем:
http://localhost:631/

На вкладке Administration, в разделе Printers, нажимаем кнопку «Add Printer».
В разделе «Add New Printer» заполняем данные принтера.
В разделе Device выбирайте «Windows Printer via SAMBA».
В разделе Device URI, в текстовое поле пишите адрес принтера «smb://printeruser:printerpassword@domenname/hostname/printername».
printeruser — имя пользователя для которого разрешён доступ к принтеру;
printerpassword — пароль пользователя для которого разрешён доступ к принтеру;
domenname — домен к которому принадлежит пользователь, если нет @domenname можно опустить.
hostname — имя или ip-адрес компьютера к которому подключён принтер;
printername — сетевое имя принтера.
В разделе «Make/Manufacturer» выбираем фирму — производителя принтера.
В разделе Model/Driver, в окне Model выбираем пункт «HP LaserJet Series PCL 6 CUPS (en)», нажимаем «Add Printer».
При необходимости изменяем параметры принтера, нажимаем «Set Printer Options».
После небольшой задержки происходит переход на страницу с принтером. И посылаем на печать тестовую страницу, нажав «Print Test Page».

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

Ответ на: Я умный → Про медицину

С удовольствием вчитался в труд pa100r о буднях современной медицины глазами пациента — мне самому эта тема очень близка. Хочу рассказать, как этот вопрос решается в «продвинутой» Германии.
Система поликлиник здесь не развита так, как в России, существуют либо небольшие частные практики, либо частники объединяются в клиники среднего размера. Есть ещё муниципальные и университетские больницы, которые заняты тем, что оперируют и/или исправляют врачебные ошибки частников.
О них мы сегодня говорить не будем, так как они вынуждены работать по строгой системе, иначе им просто не справиться с огромным количеством пациентов. Здесь внедрены самые разнообразные программные решения, вплоть до SAP а также применяются комплексные проекты «клиника под ключ» вроде тех, которые поставляет фирма, на которую я работаю (Сименс АГ).
Но, вернёмся к нашим баранам, то есть, подавляющему большинству частных врачей всех мастей, куда и обращается простой немецкий смертный, втиснутый в страдающий от недоедания бюджет страховой медицины.
Здесь картина часто весьма удручающая, время приёма (нем. der Termin) пациентам раздают по старинке, т.е. по телефону или лично и заносят в обычный ежедневник. Очень хорошо, скажете вы, хоть какая-то система. А вот и нет, придя, например, в назначенное время к ортопеду, я попал к врачу только через два часа ожидания. Причина проста, несмотря на систему распределения визитов к врачу, частные практики умудряются «вставлять» между ожидающими других пациентов, какие-нибудь срочные случаи, знакомых или просто нестраховых пациентов, которые платят существенно больше, чем больничные кассы, за нас, несчастных.
Не знаю, как в российских поликлиниках, но в Германии врач тратит на вас рекордно короткое время и при выдаче диагнозов ограничивается общими фразами, которые ему как раз и подсказывает компьютер (рекорд — 90 секунд). Вот такую компьютеризацию я как раз не приветствую, врач здесь смотрит больше в монитор, чем на больного.
Кое-где раздача «терминов» производится на основе какого-нибудь ПО, простого органайзера, по-быстрому переделанного в медицинский календарь. Но это реже.

В остальном, большой разницы между российским и немецким здравоохранениями не наблюдается. В тесной комнате ожидания, можно также подхватить массу всякой заразы, аналогично наблюдается полное безразличие к твоим проблемам со стороны персонала, а также имеется чёткое разделение на страховых и частных пациентов.
Имейте в виду что и страховая медицина в Германии дело не дешёвое. У работающего человека больничная касса забирает ежемесячно ок. 15% его зарплаты. Берегите здоровье, %usernames%!

Усовершенствованный разбор GET запроса с помощью Javascript.

Иногда надо разобрать GET запрос с помощью JavaScript. Задача считается достаточно тривиальной и в интернете огромное количество литературы на эту тему. Достаточно в Google ввести «get запрос javascript» и перейти по первой же ссылке. Но большинство таких примеров следующие недостатки:
Читать дальше →

Идея: упрощаем интерфейс и избегаем ошибок

Постоянные думы над интерфейсом моих программ в конечном итоге вылились в идею о «разграничении доступа к настройкам ПО».

Интеллектуальная защита «от дурака»


Ещё в старших классах школы наша учительница информатики постоянно говорила о необходимости защиты «от дурака». Предусмотреть невозможность деления на нуль, не дать ввести буквы в поле даты рождения и пр.
Сейчас, когда разрабатываемые программные решения стали серьёзнее, появилась и необходимость каким-либо образом ограничивать доступ пользователя к некоторым настройкам программы. Простейшее деление на админ/неадмин уже давно изжило себя и требуются более свежие решения.

Я представляю это как внедрение единой системы оценки пользователей по 10-бальной шкале. То есть человек, фактически впервые севший за компьютер, который только изучает мышку и клавиши клавиатуры получает 0 баллов. Соответственно же компьютерный «гуру» получает 10-ку.
Для чего это необходимо? В случае с нулевым уровнем знаний по данной шкале, например, тот же Microsoft Word может запросто убрать 95% своих настроек и возможностей. С уровня 3 можно разрешить таблицы, с уровня 5 — макросы и т. д.

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

Такие решения призваны:
  • облегчить работу неопытного пользователя;
  • уменьшить риск возникновения ошибок по вине пользователя в работе ПО и, как следствие, разгрузить техническую поддержку;
  • упростить интерфейс при этом не делая его хуже.

А как Вам такая идея?

Gentoo + qutim

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

#!/bin/bash
#script by LonFas
echo ========================
echo Проверка ревизий QutIM
echo ========================
cd ~/Desktop
core=$(svn co qutim.org/svn/qutim | awk '{print $4}'| cut -b 1-3)
echo Core [ $core ]
icq=$(svn co qutim.org/svn/icq | awk '{print $4}' | cut -b 1-2)
echo ICQ [ $icq ]
jabber=$(svn co qutim.org/svn/jabber | awk '{print $4}' | cut -b 1-3)
echo JABBER [ $jabber ]
mrim=$(svn co qutim.org/svn/mrim | awk '{print $4}' | cut -b 1-3)
echo MRIM [ $mrim ]
irc=$(svn co qutim.org/svn/irc | awk '{print $4}' | cut -b 1-2)
echo IRC [ $irc ]
echo ================================================================
echo 'Для сборки QutIM необходимо Qt больше 4.3, cmake больше 2.6'
echo 'Введите «y» для компиляции, или любую другую клавишу для отмены:'
echo ================================================================
read name
case $name in
y)
rm -Rf ~/qutim_old
mv ~/qutim ~/qutim_old
cp -R ~/Desktop/qutim ~/qutim
cd ~/qutim
cmake.
make
cd ~/qutim/plugins/icq
qmake
make
cd ~/qutim/plugins/jabber/
cmake.
make
cp libjabber.so ../
cd ~/qutim/plugins/irc
qmake
make
cp libirc.so ../
cd ~/qutim/plugins/mrim
qmake
make
;;
*)
echo 'Ну как хочешь :('
exit 0
;;
esac

Прошу сильно не ругать xD

Настройка двух подключений: интернет+локал (актуально для сети провайдера Домолинк")

Здравствуйте.
Одно время пытался найти на просторах глобальной сети материал по настройке двух подключений (интернет+локал), но после долгих поисков, толкового ничего не нашел, а может на то время так казалось.
Одна нашлись добрые люди, которые помогли настроить, а я в свою очередь написал небольшую инструкцию дабы самому не забыть и с другими поделиться.
А вот собственно и инструкция:

Проверяем установлен ли «pppoe»:
dpkg -l pppoe

Если не установлен, то устанавливаем:
apt-get install pppoe

Теперь переходим в /etc/ppp/peers и создаем там два файла – «dsl-internet» и «dsl-local»:
touch dsl-internet dsl-local

В файле «dsl-internet» пишем:
pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452 -C BRAS -U"
noipdefault
defaultroute
replacedefaultroute
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
persist
noauth
user "user-32dml" #вместо user-32dml/local пишем свой логин


В «dsl-local»:
pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452 -C BRAS -U"
noipdefault
nodefaultroute
noreplacedefaultroute
hide-password
noauth
user "user-32dml/local" #вместо user-32dml/local пишем свой логин
lcp-echo-interval 20
lcp-echo-failure 3
persist
ipparam "local"


В /etc/ppp/chap-secrets заносим учетные данные, полученные у провайдера, следующим образом:
"user-32dml" * "pass"
"user-32dml/local" * "pass"


Заходим в /etc/network и редактируем файл interfaces, чтобы он выглядел примерно вот так:
auto eth0
iface eth0 inet static
address «ip для связи с модемом, например 192.168.1.2»
netmask «маска подсети»
auto dsl-internet
iface dsl-internet inet ppp
pre-up /sbin/ifconfig eth0 up
provider dsl-internet
auto dsl-local
iface dsl-local inet ppp
pre-up /sbin/ifconfig eth0 up
provider dsl-local


Теперь идем в /etc/ppp/ip-up.d и там создаем файл local-route и делаем его исполняемым:
touch local-route
chmod +x local-route


Далее в этом файле пишем:
#!/bin/bash
if [ "$PPP_IPPARAM" == "local" ];
then
/sbin/route add -net 10.152.0.0 netmask 255.255.0.0 dev $PPP_IFACE
fi


Проверяем, является ли файл исполняемым:
ls -l local-route

Теперь нужно ещё проверить установлен ли пакет iproute:
dpkg -l iproute

Теперь надо исправить /etc/resolve.conf:
nameserver «dns полученные у провайдера»

Проверяем наличие всехсозданных файлов в /etc/ppp/peers.
Должно быть: dsl-internet dsl-internet.save dsl-local dsl-provider provider pty

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

Хотелось бы также услышать советы и рекомендации, а также опыт подобной настройки в других дистрибутивах.

Работа «на дядю», фриланс, «сам себе дядя». А что еще?

Написано под влиянием поста — habrahabr.ru/blogs/freelance/55143
Спасибо автору за иной взгляд.


Задавая себе этот вопрос, многие просто не находят на него ответа и выбирают между первыми тремя вариантами…

Кто я? Постараюсь трезво себя оценить. Дизайнер полиграфии и php-программист довольно низкого уровня написания кода (ну например, я не использую классы… мне этого достаточно для реализации практически любого проекта, за который я берусь)

Я более 7 лет проработал «на дядю» и решил, что больше не буду, что могу зарабатывать намного больше самостоятельно, сидя в солидном офисном кресле, но дома. Я не буду объяснять, почему это плохо — работать на дядю. Это каждый сам для себя должен уяснить, к тому же уже есть куча материалов на эту тему. Если вы также решили не работать на дядю можете читать дальше.

Начал я с фриланса еще до работы на дядю и все 7 лет старался совмещать. В основном я работал дизайнером полиграфии и арт-директором, а дома клепал сайты. Итак, я ушел из офиса домой. Почти сразу пришлось задуматься: а не стоит ли мне самому стать дядей? Я много читал на эту тему, разговаривал с людьми, которые уже давно крутятся в этом деле.
Первый вывод, который я сделал для себя — платить за офис необоснованно:
1. основную работу в основном делаю я сам (а мне и дома неплохо)
2. я и так квартиру снимаю (хотя это личное)
3. клиенты не особо хотят приезжать куда-либо — им проще, когда приезжают к ним.
Второй вывод — не стоит регистрироваться как ЧП, ИП или ООО, если речь идет о заработке менее 500 т.р. в месяц (а обычно так оно и есть :) )
Что же делать с «безналичкой»? Все довольно просто — достаточно открыть СберКнижку в СберБанке и указывать реквизиты этого филиала + свои Ф.И.О.
КСТАТИ: Если какой-либо бухгалтер не поймет (по неопытности) куда именно переводить деньги — скажите ему что Получатель — это Название филиала СБ РФ и ваши Ф.И.О.
Я пробывал уходить домой и раньше, но этот опыт был неудачным — я просидел дома полгода и вернулся к дяде. Позже (потребовался 1 год) я разобрался почему мне было так сложно — я пытался совместить кучу профессий: руководитель проекта, дизайнер, верстальщик HTML, программист и менеджер. Когда я ушел во второй раз, я подал в онлайн-газеты и другие сайты объявления о поиске менеджера с хорошими процентами (20-25% от заказа). Здесь возникла сложность: я встречался с более чем сотней разных людей, ВСЕ они соглашались, но потом никто не работал. Поначалу я думал, что это потому, что у меня нет офиса, но потом я увидел точно такую же ситуацию и при его наличии. Я обзвонил этих людей и выяснил, что почти все они даже не пробывали начать, посчитав работу крайне сложной или наоборот очень легкой для получения такого заработка и продолжили искать работу дальше. Позднее я все-таки нашел менеджера — неплохого человека, с которым сдружился и сейчас планирую несколько проектов (но это уже другая история).

Вернусь к работе фрилансера. Да, меня ждала постоянная поддержка клиентов и кодинг стал понемногу отходить на второе место. Но когда есть проблема, нужно не бежать от нее к тому, что уже было, а думать и решать её!

Для начала нужно сделать так, чтобы клиенты сами наполняли сайт, а для этого CMS должна быть наиболее «дружелюбной» и понятной.

Вопрос: Можно ли будет в дальнейшем избежать поддержки клиентов?
Ответ: Нет, иначе это будет называться «всех кинул». Так конечно некоторые делают (в основном те, кто делает сайты на бесплатных движках), но этим они портят отношение клиентов ко всем разработчикам, вызывая у первых повышенное недоверие и непонимание ценности той или иной работы.

Вопрос: Я уже устал делать всем сайты, а потом вносить в каждый из них какие-либо поправки, обновления, дополнения… Как быть?
Ответ: Как вариант, ИМХО нужно приводить все сайты к одной универсальной CMS с возможностью ее обновления с определенного сервера. НО желательно, чтобы клиенты не знали, что обновление автоматическое — пусть лучше думают, что на них тратится достаточно много времени. А для наcтройки сайта можно использовать отдельную папку изображений оформления сайта + неизменный файл настройки (config) + основную информацию по настройке держать в базе данных (как вариант).

Вопрос: А как же быть с поддержкой? Эникейщиком тоже не охото быть, я хочу писать и творить!
Ответ: Можно организовать форум поддержки и всех клиентов попробовать гнать туда. Просить писать конкретнее и предварительно пользоваться поиском по форуму. А еще неплохо бы сделать Справку и Базу знаний по CMS и вообще по наполнению любых сайтов информацией.

Вопрос: Ну сделал я форум — службу поддержки, но со временем мне и это надоест!!!
Ответ: Можно нянять сотрудника (или договориться с товарищем о взаимовыгодной помощи, при том не только за деньги, а например бартером за рекламу или поддержку и обновление его сайта)
______________

ОСНОВНОЙ Вывод: Работа «на дядю», фриланс, «сам себе дядя»… Четвертый вариант — это служба поддержки универсального программного продукта или нескольких продуктов. Кстати, универсально — не значит громоздко. Плохой пример ИМХО — Битрикс.

Вредоносная программа в банкоматах фирмы Diebold.

Специалистами по безопасности впервые обнаружена вредоносная программа для банкоматов. Судя по предварительному анализу, троян отслеживает транзакции в долларах США, российских рублях и украинских гривнах и ворует информацию о пластиковых картах, сообщает сотрудник компании Sophos Ваня Швайцер в корпоративном блоге.

Швайцер высказал удивление по этому поводу, так как создание и внедрение вредоносной программы в банкомат связаны с рядом сложностей. Банкоматы часто работают под управлением нестандартных операционных систем, а если даже это и Windows, то специализированная. Кроме того, программный и аппаратный интерфейс банкоматов считается недокументированным, банкоматы обычно соединяются в изолированные частные сети, а физический доступ к ним без специального ключа затруднён из-за множества датчиков.

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

Тем не менее когда к Швайцеру обратился знакомый сотрудник банка, поделившийся слухами о зараженных банкоматах в России, тот начал проверять базу данных Sophos по вредоносному ПО. Он искал любые данные, связанные с компанией Diebold, крупнейшим американским производителем банкоматов, о котором шла речь в данных слухах, и нашёл три недавно поступивших файла.

Автоматизированная система, которая анализирует попавшие в базу файлы, не сумела классифицировать их как вредоносые из-за их особой структуры, нацеленной исключительно на банкоматы. Однако Швайцер, проанализировав их вручную, обнаружил, что это самая настоящая троянская программа, которая способна вести подрывную деятельность в ПО Diebold Agilis, используя ряд недокументированных функций.

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

По мнению Швайцера, разработка такого трояна требует участия программиста с хорошим знанием «внутренностей» банкоматов Diebold. В то же время он не думает, что такого типа атаки на банкоматы найдут широкое применение среди киберпреступников.

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

Создание веб-сервис клиента на axis

В одном банке мне нужно было получить кредитную историю из НБКИ (национальное бюро кредитных историй)

создать классы на основе wsdl:
содержание wsdl2java.cmd

set AXIS_HOME=C:\distrib\Java\lib\axis\axis-bin-1_4\axis-1_4
java -cp %AXIS_HOME%\lib\axis.jar;%AXIS_HOME%\lib\axis-ant.jar;%AXIS_HOME%\lib\commons-discovery-0.2.jar;
%AXIS_HOME%\lib\commons-logging-1.0.4.jar;%AXIS_HOME%\lib\jaxrpc.jar;%AXIS_HOME%\lib\log4j-1.2.8.jar;
%AXIS_HOME%\lib\saaj.jar;%AXIS_HOME%\lib\wsdl4j-1.5.1.jar org.apache.axis.wsdl.WSDL2Java %1 %2 %3 %4

gen_javafrom_wsdl.cmd
wsdl2java.cmd ConnectorService.wsdl

1) сохранил wsdl файл (ConnectorService.wsdl)

2) создаем бат файл.

3) проверяем его — запускаем.На экран выводится примерно следующее:
Читать дальше →

Трансмутация трансиверов

Добрый день, уважаемые!
Хочу рассказать о решении одной интересной проблемы, с которой мы столкнулись недавно. Дано: два офиса связанных одномодовым оптоволокном (расстояние ), активное сетевое оборудование – два коммутатора 3com 4400, 48 и 24 порта — .
Задача – связать офисы в единую сеть. Казалось бы, что может быть проще – покупаешь нужные модули — 3C17223, вставляешь в коммутаторы, подключаешь патчиками к оптокроссу на обоих сторонах, и все работает. Но из-за того, что 3com 4400 уже сняты с производства, мы смогли приобрести только один модуль, и дальше дело застопорилось – найти ему пару не могли нигде, перерыв весь и-нет.
Читать дальше →