Все потоки
Поиск
Написать публикацию
Обновить

Отправка поста с помощь Javascript

Возможно отправка поста на javascript покажется кому-то тривиальной задачей, но для некоторых, особенно начинающий програмистов моя заметка может оказаться полезной. Например сам я, пришел в Web программирование из C#, и первое время при создании сайтов я вообще не использовал javascript, все делел на Asp.Net, в том числе посты. Первый раз мне понадобилось сделать подобную штуку в процессе создания интернет магазина. Корзина работала полностью на ASP.Net и все покупки хранились в сессии. Проблема появилась когда нужно быть преребросить пользователя на сайт платежной системы при этом передав ей параметы покупок: стоимость, колличество и т.д. Платежная система принимала только посты. А мне нужно было именно «перебросить» пользователя, т.е. выполнить редирект на сайт платежной системы. По началу я пытался сделать пост средствами ASP.Net — HttpWebRequest, но в этом случае не происходила переадресация, а если делать переадресацию Response.Redirect() то, соответственно нельзя было передать пост. В конечном итоге я понял что в данном случае нет выхода кроме как отправить пост с помощью javascript, благо, сделать это совсем не сложно, и я хотел бы показать пример как это сделел я:

<html>
    <head>
        <title>Javascript Post Example</title>
    </head>
    <body>

        <form>
            <input type="button" value="Login" onclick="doPost()" />
        </form>
        
        <script type="text/javascript" language="javascript">
        function doPost()
        {
            // создаем форму, указывая адрес получателя
            var form = GenerateFormElement('http://win.mail.ru/cgi-bin/auth');
            document.body.appendChild(form);
            // добавляем параметры
            AddFormField(form,'Login','leshaaa');
            AddFormField(form,'Domain','mail.ru');
            AddFormField(form,'Password','password123987');
            // отправляем форму
            form.submit();
        }

        function AddFormField(form, name, value)
        {
            form.appendChild(GenerateInputElement(name, value));
        }

        function GenerateFormElement(action)
        {
            var form = document.createElement('form');
            form.setAttribute('action', action);
            form.setAttribute('method', 'post');
            return form;
        }

        function GenerateInputElement(name, value)
        {
            var input = document.createElement('input');
            input.setAttribute('type', 'hidden');
            input.setAttribute('name', name);
            input.setAttribute('id', name);
            input.setAttribute('value', value);
            return input;
        }
        </script>

    </body>
</html>


Данный пример иллюстрирует отправку поста на вымышленный адрес domain.com/login, передавая параметры Login, Domain, Password. На основе этого примера вы можете сделать, например, кнопочку которая будет вас удобно логинить на ваш почтовый ящик.

ТОЧКИ — сервис для автомобилистов, маршруты в обход пробок.

Приветствую!

Хотелось бы рассказать хабрасообществу о нашем проекте ТОЧКИ. Это SMS-сервис для автомобилистов по построению оптимальных маршрутов по точкам или адресам Москвы c учетом пробок.

Описание маршрута приходит в виде списка улиц, по которым он проложен.

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

Все достаточно просто.
Регистрируетесь, ставите точки на карте, называете их именами, запрашиваете маршруты. Можно вообще не регистрироваться, а сразу запрашивать с телефона маршруты, указывая в запросе адреса Москвы.

Сервис работает на всех телефонах и не требует установки в телефон программ или каких-либо настроек.

Информация о пробках предоставлена СитиГИД — поставщиком пробочной информации для федерального телеканала «Россия», портала Mail.ru, FM-радиостанций.

Адрес проекта: www.mydots.ru

Плюсы:

+ смс умеют пользоваться все
+ работает на любом телефоне, особенно это актуально для телефонов, с экраном 176x220 или меньше, где карты выглядят как кучка пикселей.
+ у смс транспорта высокий приоритет и он наиболее стабильный
+ быстрый и предметный запрос
+ можно использовать в дороге и делать запросы по адресам Москвы с телефона, даже без регистрации на сайте
+ доставка маршрута по заданному расписанию (точки, день недели, время)
+ известный поставщик информации
+ всегда под рукой, не нужно тратиться на коммуникатор, автонавигатор или прочие гаджеты
+ если в машине уже есть какой-то автонавигатор без функции пробок, то можно получать данные от сервиса и ехать, по смс, подглядывая на навигатор.
+ можно использовать просто как подсказку «как мне проехать из пункта А в пункт Б», чтобы не лазить по всей бумажной карте.
+ экспириенс по знанию города и разных объездных путей растет в геометрической прогрессии

Минусы:

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

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

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

reStructuredText для пользователя

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

А если придумать свод правил для этих обозначений, то получается язык лёгкой разметки (по-английски — lightweight markup). Лёгкой в том смысле, что в ней легче набирать и читать исходный текст, чем в более развесистых языках вроде HTML. Следуя нехитрым правилам лёгкой разметки, мы можем преобразовывать наши документы во всевозможные форматы, не теряя достоинств простого текста: возможности написать и прочитать его где угодно.

Так как идея проста и красива, языков лёгкой разметки наплодилось довольно много. Один из самых известных и мощных — reStructuredText (сокращённо RST). Изначально он создавался для того, чтобы документировать код на языке Python, но вполне может применяться для любых других текстов. О том, как это сделать, я и расскажу в этом топике.

Читать дальше →

Обновляем Ubuntu до версии 9.04 Jaunty Jackalope

Здравствуйте, уважаемое сообщество!
Все уже наверняка слышали о грядущем релизе дистрибутива Ubuntu 9.04 Jaunty Jackalope, намеченного на апрель сего года.Чтобы не перегружать в следующем месяце сервера компании Canonical я предлагаю обновиться до следующей версии уже сейчас.
1) Для этого открываем файл /etc/apt/sources.list и приводим его к следующему виду:

deb http://archive.ubuntu.com/ubuntu/ intrepid main restricted
deb-src http://archive.ubuntu.com/ubuntu/ intrepid main restricted
deb http://archive.ubuntu.com/ubuntu/ jaunty main restricted
deb-src http://archive.ubuntu.com/ubuntu/ jaunty main restricted
deb http://archive.ubuntu.com/ubuntu/ intrepid-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu/ intrepid-updates main restricted
deb http://archive.ubuntu.com/ubuntu/ jaunty-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu/ jaunty-updates main restricted
deb http://archive.ubuntu.com/ubuntu/ intrepid universe
deb-src http://archive.ubuntu.com/ubuntu/ intrepid universe
deb http://archive.ubuntu.com/ubuntu/ intrepid-updates universe
deb-src http://archive.ubuntu.com/ubuntu/ intrepid-updates universe
deb http://archive.ubuntu.com/ubuntu/ jaunty universe
deb-src http://archive.ubuntu.com/ubuntu/ jaunty universe
deb http://archive.ubuntu.com/ubuntu/ jaunty-updates universe
deb-src http://archive.ubuntu.com/ubuntu/ jaunty-updates universe
deb http://archive.ubuntu.com/ubuntu/ intrepid multiverse
deb-src http://archive.ubuntu.com/ubuntu/ intrepid multiverse
deb http://archive.ubuntu.com/ubuntu/ intrepid-updates multiverse
deb-src http://archive.ubuntu.com/ubuntu/ intrepid-updates multiverse
deb http://archive.ubuntu.com/ubuntu/ jaunty multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
deb http://archive.ubuntu.com/ubuntu/ intrepid-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ intrepid-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu intrepid partner
deb-src http://archive.canonical.com/ubuntu intrepid partner
deb http://security.ubuntu.com/ubuntu intrepid-security main restricted
deb-src http://security.ubuntu.com/ubuntu intrepid-security main restricted
deb http://security.ubuntu.com/ubuntu intrepid-security universe
deb-src http://security.ubuntu.com/ubuntu intrepid-security universe
deb http://security.ubuntu.com/ubuntu intrepid-security multiverse
deb-src http://security.ubuntu.com/ubuntu intrepid-security multiverse


Если Вы используете KDE как рабочую среду, то следует добавить

deb http://ppa.launchpad.net/samrog131/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/samrog131/ppa/ubuntu jaunty main


2) Обновляем списки пакетов из только что добавленных репозиториев:

sudo aptitude update

3) Устанавливаем ядро Ubuntu Jaunty:

sudo aptitude install linux-image-2.6.28-11-generic linux-restricted-modules-2.6.28-11-generic linux-headers-2.6.28-11 linux-headers-2.6.28-11-generic

4) Перезагружаемся и грузим новое ядро.

5) sudo aptitude update

6) sudo aptitude upgrade

7) Перезагружаемся и работаем в новой системе!

Фреймворк Web Integrator

Так получилось, что я Бразилии и работаю в web-разработчиком в Tecnisys на родине у меня не было опыта работы в профессиональной WEB-студии, посему у меня не получится сравнить, но хотя бы малость опишу инструмент, которым пользуются бразильские сайтостроители, это — Web Integrator (далее WI). По крайней мере у нас тут в конторе все крутится вокруг него.
Читать дальше →

how-to: postfix

Данная конфигурация легко справляется со «средней» сетью. В моём конкретном примере: 60 доменов, 500 ящиков, около 500 мб корреспонденции в сутки. how-to создвалось в личных целях для «скоростного» развёртывания на местности.
Читать дальше →

Взыванье к товарищам, небезразличным к судьбе коворкинга в Украине

Приветствия!
Мое имя Артем, я являюсь собствеником coworking-центра «STATUS» (г. Киев). Сайт: www.status-olimp.at.ua
Поскольку Habrahabr является очень релевантным ресурсом, хотелось бы оставить пост для того, чтобы люди знали о нас и обсуждали нашу деятельность. Убежден, что это могло бы помочь развитию коворкинга в целом и в Украине в частности. Таким образом, люди могли бы нас находить не только в мунге (http://office.munga.ru/status/info) и википедии (http://ru.wikipedia.org/wiki/Коворкинг) но и на Habrahabr.

Был бы очеь признателен за инвайт,
Артем

jQuery. Загрузка файлов — просто, быстро и понятно

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

Есть такой плагин Ajax upload для jQuery. Его фсайт.
Замечателен он тем что прост в использовании и тоже работает без перезагрузки страницы. Примеры его работы.

Не хочу заниматься переводом доки для этого плагина. На офсайте все и так расписано достаточно хорошо (на английском). Понятные примеры.

И еще! Данный плагин есть и под Prototype — это для любителей прототипа.
Лично я связал этот плагин с upload progress'ом и без проблем реализовал показ статуса загрузки.

В общем вот так. Если есть вопросы то дайте инвайт и буду отвечать на все ваши вопросы по этому поводу в комментах или же сделаю наиболее полную статью про это.

Кириллица в DOS-приложениях.

Как-то раз надоели крякозябры в ДОСе, нашёл где чего поправить и всё сделал. Ну, и как это бывает очень часто, — один раз сделал и забыл. И вот опять понадобилось. Месяц назад так и не смог ничего сделать… Умники и умницы на форумах советовали просто поменять кодировку: cmd -> chcp866 либо chcp1251 либо chcp1251>null и проч. Меняется только кодировка выводимого в DOSe текста, в приложениях крякозяблики остаются. Были также советы исправить в реестре значения ключей 1250-1255.nls на 1251.nls
(разделы: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage)

Вот нашел несколько выходов:
1) в FAQ по мелкософту нашлась статейка:

Необходимо в реестре в ветке
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\DosKeybIDs
Параметр 00000409
Значение изменить на «ru».
Кроме этого, в файле autoexec.nt, расположенном в Windows\system32, надо добавить строку «lh %SystemRoot%system32kb16.com ru» (без кавычек).
После перезагрузки переключение раскладки клавиатуры в DOS-приложениях будет производиться комбинациями Ctrl+Left Shift (английская) и Ctrl+Right Shift (русская).
Данный метод нормально работает в том случае, если в Региональных Параметрах в качестве параметра по умолчанию установлен русский язык.

2) Можно просто скачать архивчик RusDOS.rar
в описании проги приводится примерно тот же принцип работы, что и в п.1

3)Чтобы была обеспечена полная поддержка кириллицы в DOS стандартными средствами, должны быть указаны две строки в файле config.sys:
device=c:\windows\command\display.sys con=(ega,437,1)
country=007,866,c:\windows\command\country.sys
и три строки в файле autoexec.bat:
c:\windows\command\mode.com con cp prep=((866) c:\windows\command\ega3.cpi)
c:\windows\command\mode.com con cp select=866
c:\windows\command\keyb.com ru,,c:\windows\command\keybrd3.sys
Первая строка для config.sys обеспечивает загрузку драйвера, с помощью которого возможно отображение в DOS-окне символов кириллицы. Вторая включает поддержку русской кодовой страницы и в том числе поддержку имён файлов на кириллице, поэтому её присутствие важно, даже если вы не работаете с DOS-программами. Первые две строки для autoexec.bat подготавливают и выбирают русскую кодовую страницу в качестве текущей. А третья обеспечивает возможность ввода с клавиатуры символов кириллицы. Переключение на английскую раскладку осуществляется нажатием +<левый Shift>, на русскую — +<правый Shift>. Если вы для переключения раскладки вместо клавиши предпочитаете использовать , тогда вместо keybrd3.sys надо указать keybrd2.sys

4) ну, и любителям Unix: можно почитать тут про поддержку кириллицы в Dos-эмуляторе.

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, а таких множество, смогут отправлять свои документы на печать.