some image

Обо всем

Проверить использование памяти linux debian

Обо всем

Для того чтобы проверить какой процесс сколько потребляет памяти и процессора в командной строке вводим

top

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

Качество интернета в Шерегеше

Обо всем

Хочу поделиться впечатлениями о жизни и работе в Шерегеше .

Поехали мы с другом пожить, поработать (благо работаем вместе) и покататься в Шерегеш на 9 дней.

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

20140305_140931

На удивление в геше все очень цивилизованно в плане аренды жилья. За неделю до поездки мы сняли отличнейшую однокомнатную квартиру только только после ремонта за 1300р/сутки. Я думаю, если поторговаться, можно еще снизить цену, мы не торговались.

Шерегеш. Вид с горы Зеленая.

Интернет в Шерегеше

Интернет есть почти во всех съемных квартирах. Местный провайдер дает его через коаксиальный кабель, вместе с кабельным TV. К антенне подключается приставка, которая и дает интернет на роутер. Как результат — сносные пинги, но маленькая скорость (в районе 1мбит/сек, т.е. даже ролики на ютуб в нормальном качестве не успевают грузиться, хотя 2 RDP держит хорошо).

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

1OyAbwsFtd8

Тайм менеджмент

Удаленная работа на горнолыжном курорте дело тяжелое. Не все могут осилить работать просто из дома, а тут еще и соблазн в виде высоченной горы за окном. Так что поездка с полным рабочим днем — хороший урок по тайм менеджменту. Чтобы все успеть нужно очень ценить свое время. Мы работали с 9 до 13, далее с 13 до 17 катались, и потом с 17 до 21-22 снова работали. В целом очень комфортный график, остается даже прилично времени на ничегонеделание.

И, если учесть, что заработали мы за это время столько же, сколько потратили (еда, проживание и подъемники), то это просто мега крутая тема: бесплатно 9 дней, изо дня в день кататься в горнолыжной Мекке Сибири:) Enjoy!

Шерегеш. Фрирайд.

SoftException in Application.cpp apache2 + PHP + suPHP errors

Обо всем

Если вы видите следующие ошибки в логе apache/var/log/apache2/error.log )

[Mon Jul 15 19:43:46 2013] [notice] Apache/2.2.22 (Debian) mod_fcgid/2.3.6 PHP/5.4.4-14+deb7u2 configured — resuming normal operations
[Mon Jul 15 19:43:53 2013] [error] [client 192.168.1.49] SoftException in Application.cpp:350: UID of script «/var/www/phptest.php» is smaller than min_uid, referer: http://192.168.1.12/
[Mon Jul 15 19:43:53 2013] [error] [client 192.168.1.49] Premature end of script headers: phptest.php, referer: http://192.168.1.12/
[Mon Jul 15 19:43:53 2013] [error] [client 192.168.1.49] SoftException in Application.cpp:350: UID of script «/var/www/phptest.php» is smaller than min_uid, referer: http://192.168.1.12/

Удалите расширение:

apt-get remove suphp*

2147483647

Обо всем

Не дает покоя число 2147483647? Да у вас, батенька, переполнение. Используйте bigint.

Parallel Curl, параллельная загрузка и обработка страниц в PHP

Обо всем

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

Хочу представить вашему вниманию малоизвестную, но очень полезную библиотеку parallelcurl, являющуюся надстройкой над мультипотоковым curl.

https://github.com/petewarden/ParallelCurl

В чем смысл: библиотека предоставляет простой интерфейс callback-функций для одновременной загрузки и обработки веб контента.

Подключаем библиотеку, создаем объект класса:

$parallelcurl = new ParallelCurl(10);

 

Аргумент — число потоков для одновременной загрузки.

Весь механизм работы очень похож на js callback’и.

Стартуем загрузку, можно в цикле:

$parallelcurl->startRequest('http://example.com', 'on_request_done', array('something'));

 

Можно стартовать хоть 1000 запросов одновременно. Они все складываются в очередь. Выполняется, скажем, 10 одновременно. Как только 1 выполнился, сразу же из очереди берется следующий, а для выполнившегося потока стартует callback функция, переданная параметром:

on_request_done($content, 'http://example.com', $ch, array('something));

 

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

В основной ветке при этом можно работать как ни в чем ни бывало, никого не дожидаясь, а для того, чтобы дождаться выполнения всех запросов и callback’ов к ним, нужно выполнить:

$parallelcurl->finishAllRequests();

 

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

Безусловно, многое нужно допилить под свои нужды, но как начальный каркас — очень рекомендую.

Регулярные выражения — исключить слово

Обо всем

Для того чтобы исключить слово из регулярного выражения, или набор слов, или даже целое предложение, используем конструкцию:
((?!word1|word2).)*

Пример: получить все последовательности символов такие, которые начинаются с begin, заканчиваются end и не содержат ни слова word1, ни слова word2:
begin((?!word1|word2).)*end

ie8 window.focus не работает + работа с окнами, содержащими PDF документ

Обо всем

Сегодня наткнулся на достаточно злой баг Internet Explorer 8 ранних билдов.

Суть в том что конструкция


if( windowObjects && windowObject.focus ){

windowObject.focus();

}

может ни с того ни с сего падать с ошибкой Member not found при попытке установить фокус на окне с открытым PDF документом. Подробнее тут: http://bytes.com/topic/javascript/answers/558302-member-not-found-error-when-opening-pdfs-new-window

Вообще поведение IE8 до фикса http://support.microsoft.com/kb/979954 очень и очень странное при работе с PDF в отдельном окне. Если вы загружаете PDF документ, окно с ним тут же меняет свойства. Объект все еще есть, но в то же время его нельзя закрыть из родительского, в него нельзя запостить форму, можно только изменить document.location, тем самым закрыв PDF и дальше работая с окошком как с обычным.

Таким образом, если хотим вернуть контроль надо окном — просто меняем document.location на заготовленную пустую страницу. По-моему это самый правильный вариант. Но есть и много других решений, например — через mod_rewrite не допускать прямого открытия pdf, а вместо этого делать редирект на pdf.html?sorce=file.pdf. Страничка pdf.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
  <head>
    <meta name="generator" content=
    "HTML Tidy for Windows (vers 25 March 2009), see www.w3.org">
    <title></title>
  </head>
  <frameset>
    <frame src="test.pdf">
  </frameset>
</html>

Решение, конечно, очень некрасивое, зато 100% работоспособное, может кому пригодится