четверг, 20 июня 2013 г.

Горячие клавиши для MacOS (хоткеи, сочетания клавиш) и др.

В Linux и Windows сочетания клавиш совпадают (почти), но в MacOS  всё выглядит иначе, помимо сочетаний клавиш в данной статье будут описаны различные жесты и приемы, которы добавляют продуктивности в работе за компьютером.

Виртуальные рабочие столы

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

1. На Magic Mouse - двумя пальцами влево/вправо
2. На Magic TrackPad - четырьмя пальцами влево/вправо
3. На клавиатуре - CTRL+ВЛЕВО/ВПРАВО


Mission Control

отображение всех открытых окон, рабочих столов и выбор нужного окна

На этом же экране можно создавать дополнительные рабочие столы, для этого нужно навести курсор на верхний правый угол и нажать на появившися значек "плюс".
1. На Magic Mouse - двойной тап (без щелчка) двумя пальцами
2. На Magic TrackPad - провести четырьмя пальцами вверх
3. На клавиатуре - F3


Показать окна программы

У одной программы может быть несколько окон, при этом в доке отображается только один значок, для того, чтобы отобразить окна программы (например в браузере это может быть главное окно, окно загрузок и исходный код программы).
1. На Magic TrackPad - движение четырьмя пальцами вниз
2. На клавиатуре - F10


Запуск LaunchPad

LaunchPad  в MacOS - это некий аналог пуска, схожий с главным экраном на iOS
1. На трекпаде - свести 5 пальцев из сторон в одну точку, словно хватая мячик
2. На клавиатуре - F4


Снимок экрана

Shift+CMD+3 - снять весь экран и сохранить в файл
Shift+CMD+4 - снять выделенную область и сохранить в файл
Если добавочно нажимать еще и CTRL, то снимок будет копироваться в буфер обмена и не сохраняться в файл.

Переход назад-вперед, например в браузере

1. На Magic Mouse - смахивание одним пальцем влево/вправо
2. На трекпаде - смахивание двумя пальцами влево-вправо


Открытие ссылки в новом окне (браузер)

Клик по ссылке с зажатой кнопкой CMD

Работа с текстом

В конец строки строки (END) - CMD+ВПРАВО или  CTRL+E
В начало строки (HOME) - CMD+ВЛЕВО или CTRL+A
В конец слова ALT+ВРПАВО
В начало слова ALT+ВЛЕВО

Далее все хоткеи как в Windows, одно лишь различие что вместо CTRL нужно нажимать CMD
CMD+A - выделить всё
CMD+С - скопировать выделенное
CMD+X - вырезать
CMD+V - вставить
CMD+S - сохранить
.....

Работа с окнами

CMD+TAB - переключение между окнами
Cmd + Q  - закрыть программу
Cmd + W - закрыть окно (вкладку браузера)

Работа с файлами

cmd+delete (cmd+fn+back space) - удаление файла
cmd+opt+shift+delete ( cmd+opt+shift+fn+back space ) - аналог SHIFT+DEL, удаление, минуя корзину.


воскресенье, 26 мая 2013 г.

LAMP MacOS 10.8.3

Данная статья посвящается PHP разработчикам, который пересели на Mac с Linux, т.е. базовые знания консоли у вас должны быть


1. Конфигурируем и запускаем Apache

открываем конфиг /etc/apache2/httpd.conf
раскомментируем строчку для включения модуля PHP
LoadModule php5_module libexec/apache2/libphp5.so

При необходимости можно раскомментировать строчку относящуюся к Perl или закомментировать лишние модули для оптимизации ресурсов.

далее находим строки 
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

и дописываем индексные файлы, т.е. приводим к такому виду
<IfModule dir_module>
    DirectoryIndex index.php index.htm index.html
</IfModule>

В конец файла дописываем
<Directory /www>

        <IfModule mod_php5.c>
                AddType application/x-httpd-php .php
        </IfModule>
</Directory>

Include /etc/apache2/sites-enabled/*


Теперь создаем все необходимые директории
mkdir /etc/apache2/sites-enabled/
mkdir /www


Далее перегружаем apache командой
sudo apachectl restart

2. Конфигурируем php (5.3)


копируем дефолтный конфиг
cp /etc/php.ini.default /etc/php.ini

меняем следующие строки в php.ini:

short_open_tag = Off 
на
short_open_tag = On

чтобы работали такие теги как <?=$var;?>

post_max_size = 8M и upload_max_filesize = 2M
выставляем свои значения, я например ставлю оба параметра по 200 мегабайт, чтобы можно было в том же PHPMyAdmin грузить большие дампы бд.

3. Устанавливаем MySQL

качаем отсюда http://dev.mysql.com/downloads/mysql/
выбираем DMG под нашу систему и архитектуру

устанавливаем все 3 файла, в панели управления запускаем мускуль


добавляем mysql бинарики в PATH, для этого от имени рута дописываем в файл /etc/bashrc строчку

export PATH="/usr/local/mysql/bin:$PATH"


перезаходим в консоль (закроем и снова откроем)


задаем пароль для root
mysqladmin -u root password '123456'

теперь нужно решить траблу с сокетами
для этого открываем файл
/etc/php.ini
в нем надо найти три параметра, которые указывают на /var/mysql/mysql.sock и привести к такому виду

pdo_mysql.default_socket=/tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock




4. PhpMyAdmin

Качаем самую последнюю версию с сайта http://www.phpmyadmin.net/home_page/index.php


Заходим под админом
$ sudo su
Создаем папку
sh-3.2# mkdir /usr/local/phpmyadmin

Копируем в созданную папку наш архив
sh-3.2# cp Downloads/phpMyAdmin*.zip /usr/local/phpmyadmin/

Переходим в папку
sh-3.2# cd /usr/local/phpmyadmin/

Распаковываем архив
sh-3.2# unzip phpMyAdmin*.zip

Удаляем архив
sh-3.2# rm phpMyAdmin*.zip

Переименовываем папку
sh-3.2# mv phpMyAdmin*/ www

Cоздаем конфиг для apache
sh-3.2# nano apache.conf

вставляем в него такие строки
Alias /phpmyadmin /usr/local/phpmyadmin/www
<Directory /usr/local/phpmyadmin/www>
        Options FollowSymLinks
        DirectoryIndex index.php
        Options Indexes
        Order allow,deny
        Allow from all
        <IfModule mod_php5.c>
                AddType application/x-httpd-php .php
                php_flag track_vars On
        </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/local/phpmyadmin/www/libraries>
    Order Deny,Allow
    Deny from All
</Directory>
<Directory /usr/local/phpmyadmin/www/lib>
    Order Deny,Allow
    Deny from All
</Directory>



Теперь создаем конфиг

cp www/config.sample.inc.php www/config.inc.php


Потом добавляем наш конфиг в общий конфиг апача
nano /etc/apache2/httpd.conf

в конец дописываем
Include /usr/local/phpmyadmin/apache.conf


После всех манипуляций можно перезапустить апач и mysql и попробовать зайти по адресу
http://localhost/phpmyadmin



суббота, 25 мая 2013 г.

Восстановление загрузочной записи (MBR) Windows 7

Загрузочный диск отличается от обычного наличием MBR  - главной загрузочной записи, если просто скопировать диск пофайлово, то Windows не загрузится, так же при установке и дальнейшем удалении Linux может возникнуть проблема при загрузке Windows 7.

Для того, чтобы восстановить MBR нужно загрузиться с установочного диска Windows 7, выбрать восстановление системы, далее запустить командную строку и выполнить в ней 2 команды:

Bootrec.exe /FixMbr
Bootrec.exe /FixBoot

среда, 22 мая 2013 г.

Как зайти в Bios на Mac Mini 2012 и др.

Многие пользователи задают в интернете вопрос "как зайти в BIOS на Mac". На самом деле на маке нет традиционного биоса, там стоит EFI, это тоже биос но уже более современного поколения, этот EFI представляет некую прошивку на материнской плате, которая загружает систему, имеет встроенные восстановительные утилиты и т.д.

Для того, чтобы загрузиться с внешнего диска (usb-cdrom,usb-flash...) нужно при включении удерживать кнопку С.

Для выбора загрузочного диска нужно удерживать кнопку Alt (option).

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

Для загрузки в Verbose режиме (вывод отчета загрузки) нужно удерживать CMD+V


Для того, чтобы войти в меню восстановления системы удерживайте сочетание Win+R или Command+R. Загрузится мини-оболочка, в которой можно переразметить диск, установить из интернета Mac OS (занимает около 4-6 часов).


Другие опции можно найти тут http://support.apple.com/kb/HT1533?viewlocale=ru_RU

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

Социальные кнопки на сайте

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

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



























Спасибо за внимание, не забывайте добавляться в нашу группу вконтакте

суббота, 12 января 2013 г.

ISPConfig смена порта и другие доработки

Обратите внимание, все модификации проверены на версии ISPConfig 3.0.4.6

Смена порта для создаваемых виртуалхостов apache

Данная манипуляция актуальна в том случае, когда вы ставите nginx перед apache, большинство инструкций в интернете предлагают редактировать файлы
apache_ispconfig.conf.master 
vhost.conf.master  

но это подходит для более старых версий, в новых версиях в данных конфигах вместо порта мы увидим

{tmpl_var name="port"}

следовательно сам порт прописан в ином месте, а именно в


/usr/local/ispconfig/server/plugins-enabled/apache2_plugin.inc.php 
/usr/local/ispconfig/server/plugins-enabled/apps_vhost_plugin.inc.php 

ищем в этих файлах цифру 80, относящуюся к порту и меняем на свой порт.

 

 

Поддержка кириллических и других punycode доменов

сперва включаем перекодировку в списке сайтов

1. Переходим в директорию с классами
cd /usr/local/ispconfig/interface/lib/classes

2. Скачиваем класс для перекодировки punycode
wget http://phlymail.com/download/Goodies/idna_convert_080.zip

3. Распаковываем
unzip idna_convert_080.zip


4. Открываем файл /usr/local/ispconfig/interface/lib/classes/listform_actions.inc.php

в функцию prepareDataRow, после строки
$key = $field['field'];

require_once('idna_convert.class.php');
$idn_class = new idna_convert(array('idn_version' => '2008'));
$rec[$key] = $idn_class->decode(stripslashes($rec[$key]));

далее продолжим идею и сделаем сохранение рф доменов

PHP-CLI консольный интерпретатор

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

Чтобы выполнить php файл из командной строки, нужно использовать php-cli - это консольный вариант интерпретатора php.

Выполнение файла примерно такое
php file.php

1. Входные параметры

Если нужно передать входные параметры скрипту, то вытащить их можно из массива $argv, входные значения разделяются пробелом и попадают в массив под номерами, начиная от 0, но стоит учесть, что $argv[1] содержит первый параметр, переданный не скрипту, а  интерпретатору.

В файле test.php напишем такую строчку:
<?php print_r($argv); ?>




А потом выполним скрипт:

$ php test.php 123 789 456
Array
(
[0] => test.php
[1] => 123
[2] => 789
[3] => 456
)


Как мы видим, $argv[0] содержит путь до файла, который является первым параметром для php.

2. Относительные пути

Стоит учесть,  то что при выполнении скрипта через php-cli относительный путь будет отсчитываться не от директории скрипта (как это бывает с Apache), а от текущей директории, из которой выполнена команда запуска.

вторник, 27 ноября 2012 г.

Краткий курс верстальщика. Часть 1. Введение в HTML/CSS

1. Краткое введение в HTML

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

Теги
Это такие контейнеры, в которые вставляется содержимое страницы (не всегда текст), для каждого контейнера есть атрибуты, каждый тег должен закрываться (не всегда обязательно, но рекомендуется). В современном мире принято делать основную разметку страницы блоками, а остальные теги использовать только их прямого назначения. Табличные данные нужно размещать в теге <table>, заголовки в <h1> <h2> ..., абзацы в <p>.
Контейнер открывается например так <p> и закрывается точно таким же тегом, только с наклонной чертой </p>, то что находится между открывающим и закрывающим тегом является его содержимым, например

<h1>Содержимое заголовка</h1>
<p> Содержимое абзаца </p>

Но, как я и говорил, существуют такие теги, которые не имеют закрывающего тега, например: <img> - изображение
<br> - перенос строки

По правилу хорошего тона эти теги нужно закрывать вот так
<img />
<br />

Атрибуты
<тег атрибут="значение" атрибут2="значение2">

Например
<img src="image.png" border="0" />

2. Краткое введение  в CSS

То что делает CSS, возможно описать атрибутами тегов и специальными тегами, но CSS позволяет это сделать более лаконично и гибко, в CSS такой синтаксис:

селектор {атрибут: значение}

можно перечислить сразу несколько атрибутов:

селектор {атрибут1:значение; атрибут2: значение}

можно делать переносы и отступы:
селектор {атрибут1:значение;
атрибут2:значение}

можно одну группу правил применить для нескольких селекторов

селектор1, селектор2 {атрибут1:значение ......}

Теперь поговорим о селекторах
тег - название тега
#id - символ "решетка" и название id блока (или тега)
.class - "точка" и название класса

id и class это специальные атрибуты тегов, благодаря которым можно привязаться к конкретным контейнерам, в тегах это прописывается так:

<p class="vasya">.....</p>
<p id="petya">.....</p>

в CSS делается так

p {font-weight:bold;} /*для всех абзацев текст жирный*/
.vasya {color:red} /*для первого абзаца текст красный*/
#petya{color:green} /*для второго абзаца текст зеленый*/

Если вы привязали например класс к нескольким тегам
<h1 class="dima">Заголовок</h1>
<p class="dima">Текст</p>

и желаете сузить селектор, то можно делать так
h1.dima {} /*стиль действует только для заголовка с классом dima*/
p.dima {} /*стиль действует только для абзацев с классом dima*/

Сужение выборки в селекторе можно делать следующим образом (прописывая более полный CSS путь)
p.dima a {}

действует только дл тега <a>, который находится внутри тега <p> с классом dima

<p class="dima">
<h1>Это тот самый текст</h1>
</p>

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

.bold {font-weight:bold;}
.red {color:red;}
.underline {text-decoration:underline;}
<p class="bold red underline"></p>

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


Так же стили переопределяются в самих CSS, в порядке их перечисления внутри файла и в порядке подключения CSS файлов в документ HTML.

Далее изучаем самостоятельно
HTML http://htmlbook.ru/html
CSS http://htmlbook.ru/css

Продолжение следует...

четверг, 8 ноября 2012 г.

Backup MX Postfix - резервный почтовый сервер

Данное решение не является самым правильным, но оно вполне рабочее.

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

Для решения директор у себя дома поднимает сервер на другом провайдере, в другом районе города, ну чтобы много не тратить электричества, он использует старый нетбук с поломанным экраном, ставит на ноутбук Debian минимальной сборки без всего лишнего.

Для нашего домена прописываем такие строчки в DNS
domain.ru IN MX 10 mx.domain.ru
domain.ru IN MX 30 backupxm.domain.ru
backupmx IN A IP_адрес_директора
mx IN A IP_адрес_офиса

Далее, чтобы почтовик директора воспринимался нормально, директор звонит своему провайдеру и просит прописать обратную запись PTR на свой IP, чтобы при запросе:

nslookup IP_адрес_директора

выдавало backupmx.domain.ru 

Всё остальное - дело техники

1. Пробросить 25 порт на свой нетбук (обычно у всех wifi роутеры стоят дома)
2. apt-get install postfix
3. nano /etc/postfix/main.cf

myhostname = backupmx.domain.ru
mydomain = $myhostname
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname
mynetworks = localhost

#параметры доставки
queue_run_delay=3m
minimal_backoff_time=6m
maximal_backoff_time=9m
maximal_queue_lifetime=30d

#домены, на которые пересылать почту
relay_domains = domain.ru

smtpd_etrn_restrictions = reject
disable_vrfy_command = yes
smtpd_helo_required = yes

smtpd_client_restrictions = 

 permit_mynetworks
 reject_unknown_client
 

smtpd_relay_restrictions = 
 permit_mynetworks 
 check_relay_domains

smtpd_recipient_restrictions=
 permit_sasl_authenticated
 permit_mynetworks
 reject_unauth_destination
 reject_invalid_hostname
 reject_non_fqdn_hostname
 reject_non_fqdn_sender
 reject_non_fqdn_recipient
 reject_unknown_sender_domain
 reject_unknown_recipient_domain

#проверка IP спамеров через публичные базы
 reject_rbl_client sbl.spamhaus.org
 reject_rbl_client cbl.abuseat.org
 reject_rbl_client dul.dnsbl.sorbs.net

 

поменять нужно только строки, помеченные красным цветом, ну и еще если вы захотите отправлять через ваш почтовик мыло с каких то айпи, то можно прописать в mynetwork, еще можно покопаться с параметрами smtpd_relay_restrictions и smtpd_recipient_restrictions



Рекомендуемые к прочтению статьи