Вычисление MaxClients (Apache)

Записал maseo on July 26, 2014

В консоли запустить команду:

ps -aylC apache2 |grep "apache2" |awk '{print $8'} |sort -n |tail -n 1

Вы получите число, например 66360. Далее, поделите его на 1024 и получится - 64.80 Мб.

64.80 Мб - столько потребляет один процесс апача.

После этого, остановите апач: service apache2 stop

Потом запустим:

free -m |head -n 2 |tail -n 1 |awk '{free=($4); print free}'

Чтобы получить сколько занимают остальные процессы.

Например, 1297.

Запускаем апач заново.

И в итоге считаем MaxClients для нашего сервера:

Например, 1297/64.80 = 20

Значит MaxClient должно быть установлено в 20.

Установив правильно значение MaxClients, мы предотвращаем избыточное использование памяти апачем и подвисание сервера.

Международный день Интернета

Записал maseo on April 4, 2014

Международный день Интернета в некотором роде — праздник для всех нас. Более того, уже одиннадцатый год день Интернета празднуется во многих странах после того, как Папа Иоанн Павел II дал свою санкцию.

Международный день Интернета празднуется 4 апреля — в день преставления (смерти) святого Исидора Севильского, покровителя учеников и студентов, создавшего первую в истории энциклопедию «Etymologiae» в 20 томах. Также дата 4.04 очень похожа на ошибку HTTP 404.

День вебмастера

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

Хотя праздник "день Вебмастера" и не официальный, но отмечают его во всем мире, и из года в год он становится популярнее. Такая дата праздника, кстати, выбрана не случайно. 4 апреля (4.04) похоже на 404 ошибку (или Not Found - не найдено), вывод этой ошибки — это ответ сайта о том, что сервер не может найти данные согласно запросу пользователя. Вот так с юмором и в то же время с тонким расчетом веб-мастера и определили день своего профессионального праздника.

MySQL :: transliterate function

Записал maseo on March 21, 2014


DELIMITER $$
DROP FUNCTION `transliterate`$$
CREATE FUNCTION `transliterate`( str TEXT) RETURNS text CHARSET utf8
    DETERMINISTIC
    SQL SECURITY INVOKER
BEGIN
declare str2 varchar(2);
declare str3 text;
declare len int(11);
declare i int(11);
set str3 = '';
set i = 1;
set len = length(str);
while i <= len do
  set str2 = elt(
    instr(
      ' ,./АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя[]{}\\ієїІЄЇ"',
      substr(str,i,1)
    ),
    '-','','','','a','a','b','b','v','v','g','g','d','d','e','e','jo','jo','zh','zh',
    'z','z','i','i','j','j','k','k','l','l','m','m','n','n','o','o','p','p','r','r',
    's','s','t','t','u','u','f','f','h','h','c','c','ch','ch','sh','sh','sch','sch',
    '','','y','y','','','e','e','yu','yu','ya','ya','','','','','','','i','e','i','i','e','i'
  );
  if str2 is null then
     set str2 = substr(str,i,1);
  end if;
  set str3 = concat(str3,str2);
  set i = i + 1;
end while;
return lower(str3);
END $$
DELIMITER ;

elFinder: "Выберите, как минимум, один файл для загрузки"

Записал maseo on January 23, 2014

При выдаче ошибки:

Select at least one file to upload

"Выберите, как минимум, один файл для загрузки"

Значит нужно использовать jquery 1.9.1

LocalStorage Bootstrap3

Записал maseo on January 16, 2014

Если стоит задача сохранять в twitter bootstrap положение collapse-меню , то вот простейший пример с использованием LocalStorage:

$(document).ready(function() {
    $('[data-toggle=collapse]').click(function(){
        localStorage.setItem('lastOpen', $(this).attr('data-target'));
        $(this).find("b").addClass('fa').toggleClass("fa-angle-right fa-angle-down");
    });
    var lastOpen = localStorage.getItem('lastOpen');
    if (lastOpen) {
        $('ul'+lastOpen).collapse('show');
    }

});

(по аналогии можно сделать и с табами)

LocalStorage - это локальное хранилище браузера.

Браузеры, которые поддерживают эту технологию: * IE 8.0+ * Firefox 3.5+ * Safari 4.0+ * Chrome 4.0+ * Opera 10.5+ * iPhone 2.0+ * Android 2.0+

По умолчанию 5 Мб на каждый домен. В IE — 10.

Отличие cookies от localstorage - то что локальное хранилище не передает информацию на сервер, а хранится в браузере.


Multiple domains htaccess redirect

Записал maseo on January 13, 2014

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^www\.domaina\.com
RewriteRule . index.php

RewriteCond %{HTTP_HOST} !^www\.domaina\.com
RewriteRule ^(.*)$ http://www.domaina.com/$1 [R=301,L]

domainb.com -> www.domaina.com
xyz.com -> www.domaina.com
domaina.com -> www.domaina.com

LOAD DATA LOCAL INFILE + Apache 2.2 + PHP 5.3

Записал maseo on January 9, 2014

Была задача импортировать файл csv в базу mysql.

Но сервер выдал мне ошибку:

Syntax error or access violation: 1148 The used command is not allowed with this MySQL version.

Проверил все настройки mysql - LOAD DATA везде включено, но не работает.

И пробовал: PDO::MYSQL_ATTR_LOCAL_INFILE => true

Потом я решил обновить php5.3 до php5.4. И тут Остапа понесло. Обновить то я обновил, но после обновления пхп. обновился и апач до 2.4. А в Apache2.4 не работает модуль mod_ispmgr.so. Захотелось мне вернуть все обратно... Долго пришлось побороться чтобы это все получилось...

И когда это все получилось, мне почему-то на старых настройках (php5.3, apache2.2) пришлось повозиться с open_basedir. И о, чудо! Оказывается, LOAD DATA LOCAL INFILE не работал именно из-за этого!

И вот здесь это упоминается: http://ua1.php.net/manual/ru/ini.core.php#ini.open-basedir

Viewport в web-дизайне

Записал maseo on October 2, 2013

Тег viewport был придуман компанией Apple для браузера Safari, который позже позаимствовали разработчики других браузеров.

Выглядит это так:

<meta name="viewport" content="">

В атрибуте content="" можно ввести значения через запятую.

Например, если ваш дизайн разработан для мобильных под 320px вы можете указать ширину окна просмотра:

<meta name="viewport" content="width=320">

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

<meta name="viewport" content="width=device-width">

Для еще большей уверенности, что ваш макет будет отображаться, как вы хотели можно установить уровень масштабирования. Например:

<meta name="viewport" content="initial-scale=1">

... это будет гарантировать, что при открытии, ваш макет будет правильно отображаться в масштабе 1:1. Масштабирование не будет применяться при загрузке. Можно даже пойти дальше и предотвратить любые масштабирования пользователем:

<meta name="viewport" content="maximum-scale=1">

Обновление ubuntu 10.04 to 12.04

Записал maseo on September 2, 2013

Установите пакет update-manager-core если он ещё не установлен:

sudo apt-get install update-manager-core

Запустите программу обновления:

sudo do-release-upgrade

Следуйте инструкциям на экране.

Bigmir отключен от Gmail

Записал maseo on July 4, 2013

Вот и свершилось то, чего я так не хотел. Почта бигмира теперь в "своем мире" и отключена от Gmail. А у меня там был основной е-мейл. А теперь читать это неудобно. Потому, бигмир, давай досвиданья!