Май 08 2014

Делаем 2 панели задач на 2 мониторах в Linux Mint 16 Cinnamon

Категория: Uncategorizedgugglegum @ 12:40

В продолжение поста Мой опыт установки Linux Mint 16 Petra (Cinnamon edition)

Однако, есть в Cinnamon один досадный недостаток, который я осознал лишь по прошествии 2 месяцев работы в Mint. Дело в том, что я использую 2 монитора, и панель с кнопками задач доступна только на первом мониторе. К моему удивлению, возможность добавить панель на второй монитор оказалась не предусмотрена разработчиками. Нельзя сказать, что это прям жутко неудобно, но наличие панели на втором мониторе существенно повышает удобство работы при большом кол-ве окон. Особенно, если бы эти панели были не зеркальными, а на панели задач каждого монитора отображались только кнопки окон соответствующего монитора.

К счастью, мне удалось найти решение, которым я и хочу поделиться здесь. Заключается оно в установке одного расширения, одного апплета и небольшого шаманства руками. Первым делом, идём в системные настройки / Расширения (http://joxi.ru/Bx1rUxjKTJChRiM9lVw) и на вкладке “Все доступные” выбираем “Dual Monitor Panels”. Отмечаем и устанавливаем. Затем идём в настройки панели и меняем “Расположение панели” с “Традиционное (панель внизу)” на “Классическое (панель вверху и внизу)”. Выходим из системы и снова входим. После входа панель должна появиться на втором мониторе снизу, как и на первом. Теперь идём в Апплеты и на вкладке “Все доступные” выбираем “Window List for Multi Monitor”. Добавляем его 2 раза. Один на первую панель, второй на вторую. Через настройки апплета при помощи бегунка задаём, что первый должен показывать окна первого экрана, а второй — второго. При этом стандартный апплет с кнопками окон “Window List” удаляем с панели, т.к. он нам больше не нужен. Могут возникнуть небольшие проблемы с расположением этих апплетов (у меня было так, что кнопки на первом мониторе были прижаты к правому краю, а на втором к середине) — это решается перетаскиванием в режиме редактирования панели, не очень тривиально, но решаемо. После этого мы имеем 2 классические панели с кнопками задач, где на каждом мониторе только кнопки окон на этом мониторе.

Вот ссылки на расширение и апплет, там есть инструкции, которые могут помочь:

Расширение “Dual Monitor Panels
Апплет “Window List For Multi Monitor

А вот как теперь выглядит мой рабочий стол из 2х экранов (здесь они конечно же склеены в один):

DualMonitorPanels.png


Май 08 2014

Мой опыт установки Linux Mint 16 Petra (Cinnamon edition)

Категория: Uncategorizedgugglegum @ 12:25

На своём рабочем месте (в офисе) я использую Linux Mint 16 Petra (Cinnamon edition). Это очень достойный дистрибутив. Пожалуй, это лучшая альтернатива Ubuntu, которая после каждого серьёзного обновления подкидывает несколько неприятных сюрпризов, некоторые из которых принципиально не решаются доступными методами (например, последний).

Ubuntu славится тем, что постоянно внедряет какие-то новые никому не нужные сырые решения и удаляет старые обкатанные. Взять, например, оболочку Unuty — за год с лишним я, конечно, привык к ней, но не могу сказать, чтобы она начала мне нравиться больше, чем классический второй GNOME. Или вот новый клавиатурный драйвер, добавленный в Ubuntu 13.10, из-за которого глючил индикатор NumLock при переключении раскладки, переключение раскладки по Ctrl-Shift приводило к неработоспособности хоткеев типа Ctrl-Shift-буква, а в некоторых программах перестали работать даже Ctrl-C/Ctrl-V при активной русской раскладке. Собственно, проблема с клавиатурой и невозможность её решения без полной переустановки системы на более старую версию и регулярность подобных проблем, заставили меня искать альтернативу Ubuntu.

Я проработал на Linux Mint чуть более 2 месяцев, и эта система меня ни разу не разочаровала. И хотя Linux Mint основан на Ubuntu, он значительно стабильнее последней. Разработчики дистрибутива не спешат с внедрением новых не обкатанных решений, а ждут когда те будут доведены до ума. При этом их собственная оболочка Cinnamon, как я понял, является развитием классического оконного интерфейса с панелью задач и кнопкой “Пуск”, но с использованием технологий GNOME 3. За прошедшие 2 месяца у меня не возникло никаких серьёзных проблем, так что можно сказать, что система прошла испытание в боевых условиях. Вот так, например, устанавливаются все основные пакеты, которые нужны мне были для работы:

# Nginx
sudo apt-get install nginx

# MariaDB 5.5
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mirror.timeweb.ru/mariadb/repo/5.5/ubuntu saucy main'
sudo apt-get update
sudo apt-get install mariadb-server

# PHP 5.5.3
apt-get install php5
apt-get install php5-fpm
apt-get install php5-cli
apt-get install php5-mysqlnd
apt-get install php5-curl
apt-get install php5-gd
apt-get install php5-imagick
apt-get install php5-json
apt-get install php5-memcached
apt-get install php5-mysql
apt-get install php5-xmlrpc

# Redis
apt-get install redis-server

# Sendmail
sudo apt-get install sendmail

Июль 10 2013

Проект TinyPNG

Категория: Версткаgugglegum @ 14:36

Открыл для себя прикольный сайт, который позволяет значительно уменьшать размер PNG файлов (в 3-5 раз). Это может быть очень полезно при вёрстке, когда нужно сделать так, чтобы нагруженный графикой сайт загружался быстро. Никакого чуда там нет — сжатие идёт с потерей качества, но очень незначительной. В отличии от JPEG-сжатия, здесь не появляется этих ужасных артефактов на контрастных границах. TinyPNG использует хитрый алгоритм, который ценой небольшого ухудшения качества (практически не заметного на глаз) даёт большое уменьшение размеров. Для примера, вот две картинки:

Первая картинка — оригинал, весит 275Кб. Вторая картинка — обработанная TinyPNG, весит 82Кб. Вы можете сказать, что вторая картинка выглядит заметно хуже, чем первая?

Ссылка на проект: http://tinypng.org/

UPD. Однако стоит отметить, что TinyPNG выдаёт на выходе всегда PNG-8 с индексированными цветами, т.е. получаемая картинка всегда имеет не более 256 цветов. Единственное отличие от того, что производит Photoshop, это возможность получать PNG-8 картинки с альфа-каналом прозрачности, т.е. с зонами частичной прозрачности, а не как в GIF’е.


Апр 01 2013

Склонение числительных в PHP

Категория: PHPgugglegum @ 17:36

Я просто положу это здесь, т.к. эта функция практически без изменений у меня качует из проекта в проект.


/**
 * Склонение числительных (для русского языка)
 *
 * Принимает число и выбирает соответствующее склонение числительного. Всего 3 варианта, которые
 * соответствуют числам 1, 2 и 5.
 *
 * @param int $number
 * @param string $one
 * @param string $two
 * @param string $five
 * @return string
 */
$plural = function($number, $one, $two, $five) {
	if (($number - $number % 10) % 100 != 10) {
		if ($number % 10 == 1) {
			$result = $one;
		} elseif ($number % 10 >= 2 && $number % 10 <= 4) {
			$result = $two;
		} else {
			$result = $five;
		}
	} else {
		$result = $five;
	}
	return $result;
};

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

echo "Найдено " . $n . " слов";

Но $n может быть равно 1, тогда правильнее писать “слово“. А если слов, например, 23, то правильно писать “слова“. Данная функция реализует универсальный подход к решению данной задачи. Вы пишите:

echo "Найдено " . $n . " " . $plural($n, "слово", "слова", "слов");

Здесь функция $plural() принимает первым параметром число, по которому мы выбираем окончание, а тремя следующими параметрами принимает словоформы некоторого слова, которое нам нужно поставить с правильным окончанием, соответствующие числительным “один”, “два” и “пять” соответственно. Для всех остальных числительных (0, 7, 11, 22, 159) правильной будет одна из этих трёх форм и выбор нужной формы одинаков для всех существительных.


Янв 25 2013

Определить максимальный размер загружаемого файла в PHP

Категория: PHPgugglegum @ 16:09

Возникла необходимость определять автоматически какого размера файл может быть загружен при текущих настройках PHP. Однако, беглый поиск по интернету не привёл ни к одному достойному результату. Известно, что этот размер зависит от трёх параметров php.ini (”upload_max_filesize”, “post_max_size”, “memory_limit”) и не может быть больше каждого из них. Однако значения этих параметров не всегда указываются в мегабайтах, а могут указываться также в килобайтах, гигайбайтах или просто в байтах. В основном все лежащие в сети примеры срезаются уже на этом. Также они не учитывают, что размеры могут быть дробными. Поэтому я написал свою функцию, которая учитывает эти нюансы. Я просто положу её здесь, пусть кому-нибудь когда-нибудь пригодится.


/**
 * Detects max size of file can be uploaded to server
 *
 * Based on php.ini parameters "upload_max_filesize", "post_max_size" &
 * "memory_limit". Valid for single file upload form. Respects floating point
 * values like "1.5G and special values of memory_limit = -1 and
 * post_max_size = 0 that treats as unlimited.
 *
 * @throws Exception
 * @return int|float	Max file size in bytes
 */
function detectMaxUploadFileSize()
{
	/**
	 * Converts shorthands like "2M" or "512K" to bytes
	 *
	 * @param int $size
	 * @return int|float
	 * @throws Exception
	 */
	$normalize = function($size) {
		if (preg_match('/^(-?[\d\.]+)(|[KMG])$/i', $size, $match)) {
			$pos = array_search($match[2], array("", "K", "M", "G"));
			$size = $match[1] * pow(1024, $pos);
		} else {
			throw new Exception("Failed to normalize memory size '{$size}' (unknown format)");
		}
		return $size;
	};
	$limits = array();
	$limits[] = $normalize(ini_get('upload_max_filesize'));
	if (($max_post = $normalize(ini_get('post_max_size'))) != 0) {
		$limits[] = $max_post;
	}
	if (($memory_limit = $normalize(ini_get('memory_limit'))) != -1) {
		$limits[] = $memory_limit;
	}
	$maxFileSize = min($limits);
	return $maxFileSize;
}

Ну и в довесок ещё функция форматирования возвращаемого значения в человеко-читабельный формат в мегабайтах:


/**
 * Converts size in bytes into human-friendly format in megabytes (MiB)
 * and trims redundant zero decimals
 *
 * @param int|float $size		Size of file or memory in bytes
 * @param int $maxDecimals		OPTIONAL	Amount of max decimal digits
 * @param string $mbSuffix		OPTIONAL	MB-suffix (may be used for i18n)
 * @return string
 */
function formatSizeInMb($size, $maxDecimals = 3, $mbSuffix = " MB")
{
	$mbSize = round($size / 1024 / 1024, $maxDecimals);
	return preg_replace("/\\.?0+$/", "", $mbSize) . $mbSuffix;
}

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


Ноя 08 2012

МТС окончательно развязало руки телефонным мошенникам

Категория: мобильный интернет, Безопасностьgugglegum @ 12:02

Я знаю, тема уже не новая, об этом не раз уже писали, но на этот раз мошенники пошли ещё дальше — теперь чтобы подписаться на платную услугу не нужно открывать никаких ссылок из SMS, а достаточно просто кликнуть на рекламный банер в приложении (в ближайшей перспективе даже это может быть не обязательно). В данном посте речь пойдёт о новой мошеннической партнёрской сети PhoneClick. В зоне риска находятся все абоненты МТС, пользующиеся смартфонами и планшетами с 3G-интернетом на платформах Android и iOS (пруф-линк, что iOS тоже). Разумеется, всё это стало возможным не без помощи со стороны МТС, который до предела упростил жизнь контент-провайдерам, и чтобы не утонуть в судебных исках, МТС имеет услугу "запрет контента". Правда услуга эта не публичная, подключить её через интернет-помощник нельзя, для этого необходимо звонить оператору в техподдержку по 0890 или приходить лично в офис МТС. А ещё лучше оформить доп. соглашение на запрет подключения каких-либо услуг без письменного заявления от абонента, чтобы уж наверняка.

Я знал и раньше об услуге "Запрет контента", но не спешил её подключать, т.к. считал, что эта услуга предназначена для малограмотных людей, которые не думая отправляют SMS на короткие номера или выполняют USSD-запросы, описанные в сомнительных SMS. У меня ни разу в жизни не было проблем с этим, поэтому я считал, что это меня не касается, но я ошибался, т.к. на днях я с этим столкнулся. И забегая вперед, хочу сказать, что "запрет контента" необходимо подключить всем абонентам МТС, которые имеют подключенный интернет через 3G, и подключить его лучше заранее, лучше прямо сейчас, не откладывая. Потому что иного способа не пострадать от мошенников не осталось — это лишь вопрос времени. Вот как было дело у меня.
Продолжить чтение “МТС окончательно развязало руки телефонным мошенникам”


Апр 17 2011

Осторожно! Обновление Windows! (KB2509553)

Категория: Windows, Безопасностьgugglegum @ 02:27

На днях я столкнулся с проблемой: ни с того, ни с сего, интернет стал жутко тормозить. Любая страница сайта открывается около минуты, либо не открывается вовсе. Я сначала думал, что проблема в роутере (ох, уж этот D-Link знаете ли), но на этот раз дело было не в нём. У меня дома 2 провайдера (один резервный), но подобная проблема наблюдалась на обоих. Причем, вот что характерно: пинги шли хорошо, и торрент прекрасно работал, даже удаленный доступ (RDP) не тормозил, но сайты — беда. В любом браузере. Причем, у меня есть второй компьютер — на нем всё окей.

Было очевидно, что проблема не у провайдера и не в роутере, а где-то на компьютере. Я стал искать проблему в нем. Сначала вроде бы помогала перезагрузка или выключение-включение “подключения по локальной сети”, но лишь на какое-то время. Я решил было, что моя старая 3Com-овская сетевуха наелась. У меня на компьютере есть вторая сетевая карта (да, у меня всего по два) — встроенная. Я переключился на неё. Поначалу казалось, проблема решилась, но потом всё повторилось по-новой уже на другой сетевой карте. Продолжить чтение “Осторожно! Обновление Windows! (KB2509553)”


Сен 20 2010

Как отключить автоматическое воспроизведение видео на YouTube

Категория: Firefox, Lifehackgugglegum @ 02:48

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

Когда автовоспроизведение видео (autoplay) мешает? Например, работали Вы в интернете, что-то читали, смотрели видео-ролики, открывали в новых вкладках всякое “related video”. В результате у Вас открыто несколько окон с парой десятков вкладок, на некоторых из которых открыты ролики ютуба. Вы, конечно, могли бы сразу закрыть страницы с этими роликами после просмотра, но это Ваше право их не закрывать. Может быть Вы хотите потом посмотреть их еще раз или отправить ссылку другу, поэтому держите вкладку с роликом открытой. Потом вам нужно было уйти, вы выключили компьютер, а когда пришли спустя время — Вы запускаете свой любимый Firefox, чтобы почитать новости или форум, он открывается и восстанавливает все ранее открытые табы со страницами, которые были на момент когда вы заканчивали работу. И вдруг, совершенно неожиданно для Вас, восстановленные вкладки с роликами YouTube начинают воспроизводиться одновременно, создавая ужасную какофонию, тормозя компьютер и до кучи будя спящего ребенка в Вашем доме. Вы судорожно начинаете искать какие вкладки издают звук и закрывать одну вкладку за другой, параллельно пытаясь отключить или уменьшить громкость… Неприятно, правда? Есть решение! Продолжить чтение “Как отключить автоматическое воспроизведение видео на YouTube”


Сен 20 2010

Восстановить поиск Google в адресной строке в русском Firefox

Категория: Google, Firefoxgugglegum @ 01:51

С некоторых пор локализованные русскоязычные версии дистрибутива Firefox стали использовать в качестве поисковика в адресной строке Яндкес. Лично мне больше симпатичен Google, поэтому исправляем так:

1. Заходим на страницу about:config.

2. Ищем параметр keyword.URL.

3. Меняем его значение на:

http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=

Взято отсюда. Разместил в своем блоге просто, чтоб всегда было под рукой.


Фев 03 2010

Конференция по Zend Framework

Категория: Uncategorizedgugglegum @ 15:37

В конце марта 2010 в Санкт-Петербурге будет проведена конференция по Zend Framework. Насколько мне известно, это первая конференция в России. По крайней мере такого масштаба. Недавно у конференции появился свой сайт http://www.zfconf.ru/, там выложен список докладов и открыта предварительная регистрация.


Следующая страница »