Статьи про web

Как устанавливать .sh в Linux

SH - является специальным скриптом, разработанным для операционных систем семейства Linux/UNIX.

Файл который мы запускаем netbeans.sh.

Для установки .sh требуется  запустить терминал.

  1. Перед установкой(запуска), разрешим его исполнение. Для этого используем команду chmod и запустим его:
    chmod +x netbeans.sh
    ./netbeans.sh
  2. Второй вариант запустить установку, это через команду sh или bash:
    sh netbeans.sh

    или

    bash netbeans.sh

Если у вас выдает ошибку, то запускаем под Root`ом:

sudo sh netbeans.sh

или

sudo bash netbeans.sh

Установка Cinnamon в Ubuntu 12.10.

Я не постоянный, но активный пользователь Linux. Некоторое время сидел на Unity, но у меня она не прижилась. Так же, хочу сказать, мне очень понравился вариант от Elementary OS. К сожалению у меня она постоянно вылетала с ошибками, все же beta.

Система комментирования HyperComments (Гиперкомментарии)

HyperComments система комментирования позволяющая комментировать отдельное слово или фрагмент текста, в отличие от традиционных систем комментирования. Нужно просто выделить фрагмент текста и нажать на кнопку “Комментировать”, появится окно для ввода текста комментария. Также можно просматривать конкретные комментарии, что очень удобно.

Установка NetBeans IDE на Linux и JDK 1.7

1. Перед установкой IDE NetBeans 7.2.1 на Linux (Elementary OS) установим Oracle JDK.

Идем на сайт Oracle (http://www.oracle.com/technetwork/java/javase/downloads/index.html) и скачиваем нужную перейдя по  кнопке “JDK Download”. Вот прямая ссылка на список пакетов jdk: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html (возможно ссылка уже не работает).

Я скачал Linux x64 (jdk-7u10-linux-x64.rpm).

2. Теперь его необходимо установить, для этого переконвертируем его в deb.

Для этого установим alien.

sudo apt-get install dpkg-dev debhelper build-essential

После установки заходим через терминал в папку с rpm пакетом и конвертим:

sudo alien jdk-7u10-linux-x64.rpm --script

В результате вы получите примерно следующее сообщение jdk_1.7.009-1_amd64.deb generated и появится соответственно файл jdk_1.7.009-1_amd64.deb. Все запускаем его и устанавливаем.

Скачать уже deb пакет с версией 1.7.008 для x64 можно здесь (2.12.2012).

3. Скачиваем NetBeans

Заходим на сайт NetBeans: http://netbeans.org/downloads/ выбираем нужную и скачиваем. Я выбрал полную (netbeans-7.2.1-ml-linux.sh).

4. Запустим установку

sh netbeans-7.2.1-ml-linux.sh

Следуем инструкции по установки:

картинка 1

В результате вы получите нормальную, рабочую версию NetBeans:

картинка 1

Монтирование ntfs или fat раздела в linux при загрузки.

Если у вас есть ntfs раздел которым вы постоянно пользуетесь под linux, то проще будет если он всегда будет смонтирован.
Данный способ проверен на Xubuntu 12.10, Ubuntu 12.10, Elementary OS Luna (beta).

Условные комментарии в HTML для работы с IE

Условные комментарии в IE появились c версии 5. Данные комментарии позволяют использовать специфику для конкретного браузера, к примеру добавляя специальные стили или скрипты для конкретной версии браузера.

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

<!--[if lte IE 7]>
  Ваш браузер устарел, пожалуйста обновите его.
<![endif]-->

Структура условных комментариев:

<!--[if IE]>
  содержимое, вставляемое при срабатывании условия
<![endif]-->

Список возможных условий:

Конкретная версия:

<!--[if IE 6]>
  Ваш браузер IE 6!
<![endif]-->

Все версии браузера IE:

<!--[if IE]>
  Ваш браузер IE :) 
<![endif]-->

Все кроме одной версии:

<!--[if !IE 6]>
  Ваш браузер не IE 6!
<![endif]-->

Для браузеров с версией больше или равно:

<!--[if gte IE 6]>
  Ваш браузер IE 6!
<![endif]-->

Для браузеров с версией больше:

<!--[if gt IE 6]>
  Ваш браузер IE 6!
<![endif]-->

Для браузеров с версией меньше или равно:

<!--[if lte IE 6]>
  Ваш браузер IE 6!
<![endif]-->

Для браузеров с версией меньше:

<!--[if lt IE 6]>
  Ваш браузер IE 6!
<![endif]-->

Примеры:

Подключение стилей при IE 6:

<!--[if IE 6]>
  <style type="text/css">
  div.popup {
    display: none;
  }
  </style>
<![endif]-->

Подключение скрипта при версии IE меньше или равно 7:

<!--[if lte IE 7]>
  <script type="text/javascript" src="/js/ie.js"></script>
<![endif]-->

Вывод сообщения о устаревшем браузере:

<!--[if lte IE 8]>
  Ваш браузер устарел, пожалуйста <b>обновите</b> его.
<![endif]-->

Перенаправление на другую страницу (Redirect) в PHP, JavaScript и HTML

Пример перенаправлений в PHP, JavaScript и HTML с задержками и без.
header(‘Refresh: 10; URL=http://newcoder.ru/cat/web/’);
location.replace(“http://newcoder.ru/cat/web/”);
< meta http-equiv="refresh" content="10; url=http://newcoder.ru/cat/web/" >

Установка и настройка ftp сервера ProFTPd

Установим proftpd

sudo apt-get install proftpd

 

Настройка

Настройки ftp сервера proftpd хранятся в файле “/etc/proftpd/proftpd.conf”.

Для его открытия введем:

sudo nano /etc/proftpd/proftpd.conf

Авторизация:

Добавим возможность авторизации “виртуальными” пользователями, для этого в конфе введем следующие строки:

UseIPv6 off # если не используете
RootLogin off # запрещаем подключать от пользователя root
RequireValidShell off
AuthUserFile      /etc/proftpd/ftpd.passwd
AuthOrder          mod_auth_file.c

Создаем пользователя

После этого создадим пользователя, с именем ftpuser, с паролем 123

sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=ftpuser --shell=/bin/false --home=/var/www/ --uid=33 --gid=33

Это добавит пользователя в ftpd.passwd

Для изменения пароля используйте

ftpasswd --passwd --name=ftpuser --change-password

Исправление ошибки доступа (permited denide)

сhown www-data:www-data /var/www/
chmod 775 /var/www/

Оптимизация

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

IdentLookups off
UseReverseDNS off

Остальное я оставил без изменений. Все делалось на виртуальной машине с Ubuntu 12.10 Server (x86). В качестве сетевого адаптера выбран “Виртуальный адаптер хоста”, что дает использовать данный сервер вне виртуальной машины.

 

Запуск, рестарт, остановка ftp сервера

sudo /etc/init.d/proftpd start
sudo /etc/init.d/proftpd restart
sudo /etc/init.d/proftpd stop

Мой конфиг без коментов:

Include /etc/proftpd/modules.conf
UseIPv6 off
IdentLookups off
UseReverseDNS off
ServerName "WebSrv-FTP"
ServerType standalone
DeferWelcome off
RootLogin off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
RequireValidShell off
Port 21
MaxInstances 30
User proftpd
Group nogroup
Umask 022 022
AllowOverwrite on
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
AuthUserFile /etc/proftpd/ftpd.passwd
AuthOrder  mod_auth_file.c
Include /etc/proftpd/conf.d/

Запрещаем и разрешаем доступ на сайт по ip

В данной статье хочу расмотреть закрытие доступа к сайту и наоборот.

Запрет доступа ко всем файлам

 Order Deny,Allow
 Deny from all

Разрешение доступа ко всем файлам

 Order Allow, Deny
 Allow from all

Запрещаем доступ для ip 192.168.0.2

order allow,deny
 deny from 192.168.0.2
 allow from all

Разрешение на доступ только с определенного ip-адреса или пришедших с определенного сайта

Order Deny,Allow
 Deny from all
 Allow from 123.456.789.0
 Allow from site.ru

Вместо ip адреса можно указать диапозон:

 123.456.789.0/24

Также можно указать конкретный файл

<Files "index.php">
 # директивы
</files>

пример

<Files "index.php">
 Order Allow,Deny
 Allow from all
</files>

Запуск Google Chrome через прокси в Linux или Windows

Для запуска через прокси-сервер используются параметр: –proxy-server=192.168.0.1:8080

192.168.0.1:8080 – пример прокси сервера.

Запуск в Linux

Команда для командной строке или можно создать ярлык для удобства

google-chrome --proxy-server=192.168.0.1:8080

 

Запуск в Windows

Создаем ярлык или копируем его из Пуска. Открываем его свойства.

Заходим в закладку Ярлык, и добавляем:

 --proxy-server=192.168.0.1:8080

 

картинка 1

Не запускается LibraOffice после установки DrWeb

Для решения данной проблемы компания DrWeb предлагает удалить системную библиотеку программы.

Команда для удаления:

find /opt/drweb -name libgcc_s.so.1 -delete

если потребуются права суперпользователя, то соответственно запускаем через sudo:

sudo find /opt/drweb -name libgcc_s.so.1 -delete

Сам удалял, все работает отлично. Проверенно на Xubuntu 12.04, Debian вроде 6 и Ubuntu 12.04.

DrWeb был версии 6.

Настройка подключения через proxy в Xubuntu 12.04

Для работы через прокси сервер я изменял environment и apt.conf.

1. Открываем файл /etc/environment

 sudo nano /etc/environment

Добавляем или изменяем следующие строчки

 http_proxy="http://адрес:порт"
 https_proxy="https://адрес:порт"

пример

 http_proxy="http://192.168.100.1:8080"
 https_proxy="https://192.168.100.1:8080"

2. Открываем файл /etc/apt/apt.conf, для указания прокси инструментам APT

 sudo nano /etc/apt/apt.conf

Добавляем или изменяем следующие строчки

 Acquire::http::Proxy "http://адрес:порт/";

Если авторизация идет через имя и пароль, используйте вместо “адрес:порт” следующую конструкцию: имя:пароль@адрес:порт
пример:

 http_proxy="http://имя:пароль@адрес:порт"
Исключения для использования прокси сервера:

Добавляем в environment:

no_proxy=localhost,127.0.0.1,192.168.1.0/24

вместо 192.168.1.0/24 можете указать свою сеть

 

Перезагрузка.

У некоторых, требовалось несколько раз, перезагрузить систему.

Перенос строки внутри тега PRE

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

Данную проблему можно устранить добавив стили к тегу:

Для CSS3:

  white-space: pre-wrap;

Для Mozilla <2:

  white-space: -moz-pre-wrap;

Для Opera 4-6:

  white-space: -pre-wrap;

Для Opera 7-9.5:

  white-space: -o-pre-wrap;

Для Internet Explorer 5.5-8:

  word-wrap: break-word;

 

Примеры:

<style type="text/css">
  pre{
    white-space: pre-wrap;
    white-space: -moz-pre-wrap;
    white-space: -pre-wrap;
    white-space: -o-pre-wrap;
    word-wrap: break-word;
  }
</style>
<pre>
  Очень длинный код.
</pre>

Или просто добавив в свой файл со стилем:

pre {
    white-space: pre-wrap;
    white-space: -moz-pre-wrap;
    white-space: -pre-wrap;
    white-space: -o-pre-wrap;
    word-wrap: break-word;
}

Считаю можно отказаться от поддержки для firefox, opera, т.к. данные браузеры уже мало кто использует. А для IE 7 я бы оставил на 2012г.

pre {
    white-space: pre-wrap;
    word-wrap: break-word;
}

Модернизация модального окна от facebox

В данной статье хочу привести пример использования facebox, для организации вывода произвольного текста в модальном окне.

 

0. Если не подключен Jquery, то вставляем данный код

<script type="text/javascript" src="jquery.js"></script>

1. Подключим скрипт facebox и стиль для него.

<link rel="stylesheet" href="style.css" type="text/css"/>
<script type="text/javascript" src="facebox.js"></script>

2. Создадим скрипт

<script type="text/javascript">
  jQuery(document).ready(function($) {
    $('a[rel*=facebox]').facebox({
      loading_image : 'loading.gif',
      close_image : 'closelabel.gif'
    }) 
  })
</script>

3. Создаем html код

<a href="#block1" rel="facebox">Открыть</a>
<div id="block1" style="display:none;">
  <b>Содержимое модального окна</b>
</div>

Пример: Открыть

Скачать

 

Изменения

В данном скрипте все хорошо, но меня не  устраивает что модальное окно фиксировано (ширина) и я это исправил для своих задач.

Реализация:

1. Изменения в style.css. Закомментирована строка "width: 370px;"

#facebox .body {
 padding: 10px;
 background: #fff;
    /*width: 370px;*/
}

2. Открываем facebox.js. Измененные строки смещены вправо.

reveal: function(data, klass) {
 $(document).trigger('beforeReveal.facebox')
 if (klass) $('#facebox .content').addClass(klass)
 $('#facebox .content').append(data)
 $('#facebox .loading').remove()
 $('#facebox .body').children().fadeIn('normal')
    $('#facebox').css('left', '15%'/*$(window).width() / 2 - ($('#facebox table').width() / 2)*/)
    $('#facebox').css('width', '70%')
 $(document).trigger('reveal.facebox').trigger('afterReveal.facebox')
 },

В принципе все, в отличии от стандартного примера у меня окно имеет резиновый размер 70% и располагается по середине. Скачать мой вариант можно здесь.

Создание и оформление кнопки при помощи CSS.

В роли кнопки могут выступать практические любые элементы(теги), я рассмотрю пример на теге <span> с классом button.

Оформление

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

Код CSS:

span.button {
/* заливка */
  background-color: #EAEAEA;
  background-image: -webkit-gradient(linear, left top, left bottom, from(white), to(#EAEAEA));/*Chrome,Safari*/
  background-image: -webkit-linear-gradient(top, white, #EAEAEA);/*Chrome,Safari*/
  background-image: -moz-linear-gradient(top, white, #EAEAEA);/*firefox*/
  background-image: -ms-linear-gradient(top, white, #EAEAEA);/*IE*/
  background-image: -o-linear-gradient(top, white, #EAEAEA);/*Opera*/
  background-image: linear-gradient(top, white, #EAEAEA); /*CSS 3*/
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#eaeaea); /* для IE */
/* радиус границы */
  -moz-border-radius: 2px;/*firefox*/
  -webkit-border-radius: 2px;/*Chrome,Safari*/
  border-radius: 2px;/*CSS 3*/
  border: 1px solid #CCC;
  border-bottom-color: #AAA;
/* тень */
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 3px rgba(0, 0, 0, 0.25);
/* прочее оформление */
  color: #555;
  vertical-align: middle;
  cursor: pointer;
  display: block;
  padding: 2px 5px;
  margin: 2px 0px 2px 7px;
  width: 130px;
}
/* Стиль кнопки при наведении */
span.button:hover{
  background-color: white;
  background-image: -webkit-gradient(linear, left top, left bottom, from(#EAEAEA), to(white));
  background-image: -webkit-linear-gradient(top, #EAEAEA, white);
  background-image: -moz-linear-gradient(top, #EAEAEA, white);
  background-image: -ms-linear-gradient(top, #EAEAEA, white);
  background-image: -o-linear-gradient(top, #EAEAEA, white);
  background-image: linear-gradient(top, #EAEAEA, white);
  filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#EAEAEA, endColorstr=#ffffff);
}

На основании данного кода можете создать свою кнопку.

Код HTML

<span class="button">Нравится</span>

Пример

Видео о Web