some image

Обо всем

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

Обо всем

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

Поехали мы с другом пожить, поработать (благо работаем вместе) и покататься в Шерегеш на 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% работоспособное, может кому пригодится

Месяц езжу с Webasto

Обо всем

В начале декабря поставил webasto. Месяц эксплуатирую, доволен как слон.

Поставили перед печкой, как объяснили — специально (разницы там перед-после реально нет, шланги просто местами меняются грубо говоря), т.к. считается, что в печке часто, особенно в морозы, в верхнее части радиатора после стоянки может образоваться воздушная пробка и вебасте будет плохо если она ее прогонит. Не знаю правда — нет, я доволен и так.

Но рассказать и поделиться все равно есть чем.

Сразу после установки выезжаю — тачка еле греется, вообще фиг прогреешь до рабочих оборотов, ну думаю ладно, за бортом -35, лишние 2 литра антифриза в системе — привыкну. Потом понимаю что даже когда прогрелась — из печки дует холодом. Ну т.е. не просто там чуть похуже стало а вообще зябко. После установки webasto печка не греет. Ну, думаю, приплыли. Заезжаю на горку, газую, что-то булькает, эффекта нет. А машина позарез нужна была, в морозы пешком двигаться по делам удовольствие то еще. Вообщем ездил я пару дней с затянутыми окнами и холодом из печки.

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

Той же ночью поехал в академ, и совершилось. Штатная помпа на скорости под сотню + вебастовская разогнали антифриз в системе и, как и ожидалось, в машине начался дикий ташкент. Пробка вышла. В машине ташкент и без помпы, как и раньше, а с бонусной халявной кнопкой и вообще в пробке жарит как на скорости 40 км/ч.

Вывод: причин плохой работы печки после установки webasto две и только две: перегибы шлангов и воздушные пробки. Все рассказы установщиков про ухудшившуюся циркуляцию и «так и должно быть» — бред и нежелание работать, не больше.

Отдельно хочется сказать о том, куда ставить webasto.

Даже официалы норовят воткнуть webasto в бампер, не говоря уже о серых установщиках. Правильно — работы меньше всего + вот он готовенький клиент после первой аварии. Это, я считаю, полная халтура. Сразу сказал что в бампер я себе ставить не дам. Всегда можно найти место, если мозгами пошевелить. Мне вот расширительный бочек перенесли и поставили поближе к движку. Если места нет сверху, то всегда найдется место снизу, при этом выше ватерлинии. Короче надо настаивать чтоб искали, а не халтурили.

Теперь о приятном, т.е. об ощущениях после установки. Само собой, мне теперь строго без разницы на температуру за бортом. В морозы webasto завожу за 40 минут до выхода с брелка. Далее за 10 минут до выхода завожу движок чтоб в салоне стало тепло. Садишься в машину — красота. На улке -30 а тут уже теплынь, шапку снять можно, руль холодом не обжигает. Ну и выключаю отопитель только когда машина полностью прогреется уже с работающей на полную печкой, а это очень быстро. Через 10 минут езды климат, настроенный на -25, уже прикрывает печку, что как-бы говорит о быстроте прогрева.

Цена вопроса: 40т.р. Оно того стоит:)