Pull to refresh
4
0
Send message

Почему мотоцикл не смог заменить танк, или перевод сайта REG.RU с Template::Toolkit на Text::Xslate

Reading time7 min
Views5.8K
За любым крупным интернет-проектом стоит автоматизированная информационная система и сайт, продающий товары или услуги. Чем крупнее проект, тем сложнее логика сайта, и тем большую нагрузку ему приходится нести. Возникают задачи увеличения «мощности» сайта и уменьшения времени отклика страниц. Как и все, кто пишет подобные системы, периодически мы проводим сессии по тюнингу скорости работы нашего сайта. Оптимизируем всё, до чего можем дотянуться. На определённом этапе упёрлись в скорость работы HTML-шаблонизатора, который сходу не совсем понятно как «разогнать». Кое-что удалось выжать с помощью кэширования подшаблонов, но, несмотря на полученные позитивные результаты, время работы шаблонизатора всё равно оставалось краеугольным камнем в скорости генерации страниц. Нужны были более радикальные меры, возможно даже другие шаблонизаторы…

Об истории одной из наших инициатив в нелёгком деле поиска Святого Грааля самого быстрого шаблонизатора читайте ниже в подробном отчете Дмитрия Карасика, который был привлечён к решению этой задачи:

«По-моему, сейчас все используют шаблонизаторы для веб-девелопмента. Все используют и потихоньку ругаются на несовершенство выбранного инструмента. Ведь миграция развесистого проекта на другой шаблонизатор – дело весьма непростое, поэтому гораздо чаще люди предпочитают что-то допиливать в уже существующем пакете, чем переписывать массу кода с неизвестным результатом.
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments8

От домашней автоматизации и умных домов в общем к конкретному примеру

Reading time17 min
Views212K

В последнее время здесь много пишут о домашней автоматизации и умных домах. Хотел бы поделиться своим опытом, общими соображениями и конкретным проектом. Эта статься будет полезна тем кто просто хотел бы знать чем может быть в принцыпе полезен/удобен умный дом а также тем, кто хотел бы управлять(или просто наблюдать) с любого устройства с браузером(телефон, планшет, читалка, HTPC, ноутбук, настольный компьютер и тд) системой домашней автоматизации. Причём это можно делать из любой точки мира. Мой опыт и пример описанный во второй части этой статьи (Arduino, JQuery Mobile Web интерфейс и прочее) могут пригодиться тем у кто уже есть какая-то система домашней автоматизации (например X10) или тем кто начинает этот тернистый путь.
Читать дальше →
Total votes 68: ↑64 and ↓4+60
Comments40

Строим Nested Set дерево без рекурсии

Reading time3 min
Views81K
Деревья в базах данных можно хранить тремя основными методами: Adjacency List, Matherialized Path & Nested Set. Когда мы хотим переехать с AL на NS, это можно сделать с помощью рекурсии (если БД расово верная). Но что делать в случае MySQL?
Переехать с AL на NS
Total votes 20: ↑16 and ↓4+12
Comments20

Фриланс — практика. 4 года спустя

Reading time12 min
Views255K
4 года назад я открыл для себя понятие «фриланса» и описал впечатления в статье: habrahabr.ru/post/53938

Думаю, есть смысл поделиться последними наблюдениями.
Читать дальше →
Total votes 142: ↑127 and ↓15+112
Comments58

Простые стейт-машины на службе у разработчика

Reading time8 min
Views188K
Представьте на минутку обычного программиста. Допустим, его зовут Вася и ему нужно сделать анимированную менюшку на сайт/десктоп приложение/мобильный апп. Знаете, которые выезжают сверху вниз, как меню у окна Windows или меню с яблочком у OS X. Вот такое.

Начинает он с одного выпадающего окошка, тестирует анимацию, выставляет ease out 100% и наслаждается полученным результатом. Но вскоре он понимает, что для того, чтобы управлять менюшкой, хорошо бы знать закрыто оно сейчас или нет. Мы-то с вами тут программисты опытные, все понимаем, что нужно добавить флаг. Не вопрос, флаг есть.

var opened = false;

Вроде, работает. Но, если быстро кликать по кнопке, меню начинает моргать, открываясь и закрываясь не успев доанимироваться в конечное состояние. Вася добавляет флаг animating. Теперь код у нас такой:

var opened = false;
var animating = false;

function onClick(event) {
  if (animating) return;
  if (opened) close();
  else open();
}

Через какое-то время Васе говорят, что меню может быть полностью выключено и неактивно. Не вопрос! Мы-то с вами тут программисты опытные, все понимаем, что… нужно добавить ЕЩЕ ОДИН ФЛАГ! И, всего-то через пару дней разработки, код меню уже пестрит двустрочными IF-ами типа вот такого:

if (enabled && opened && !animating && !selected && finishedTransition && !endOfTheWorld && ...) { ... }

Вася начинает задаваться вопросами: как вообще может быть, что animating == true и enabled == false; почему у него время от времени все глючит; как тут вообще поймешь в каком состоянии находится меню. Ага! Состояния... О них дальше и пойдет речь.

Знакомьтесь, это Вася.


Читать дальше →
Total votes 114: ↑92 and ↓22+70
Comments96

Исследование: закрытие Megaupload могло негативно сказаться на кассовых сборах многих фильмов

Reading time1 min
Views28K
Закрытие крупнейшего файлообменника Megaupload около года назад оказало противоречивое воздействие на кассовые сборы кинофильмов. Исследование влияния этого события на сборы 1344 фильмов в 49 странах, проведённое немецкими и датскими учёными, выявило, что от закрытия Megaupload выиграли только высокобюджетные блокбастеры, идущие более чем на 500 экранах. Фильмы со средним и маленьким бюджетом скорее проиграли — их кассовые сборы только уменьшились, хоть и не очень значительно.
Читать дальше →
Total votes 74: ↑64 and ↓10+54
Comments52

Прекратите скручивать (восклицательный знак)

Reading time6 min
Views1.7M
Ну действительно, прекратите. Есть куча прикольных штук для соединения самых разнообразных проводов, а все равно технология «откусить зубами изоляцию, скрутить, замотать изолентой» жива до сих пор.

Дальше много текста, фотографий, разборок. Ну все как обычно
Total votes 682: ↑667 and ↓15+652
Comments360

Minecraft официально портирован на Raspberry Pi

Reading time1 min
Views31K


О создании официального порта Minecraft Pocket Edition для миникомпьютера Raspberry Pi было объявлено в субботу на конференции Minecon в Париже. Minecraft Pi Edition будет распространяться бесплатно, кроме того, в ней можно будет манипулировать игровым миром программно, причём на нескольких языках. Создатели игры надеются, что Pi Edition будет не только развлечением, но и инструментом для обучения программированию, ведь программировать в мире Minecraft намного более увлекательно, чем писать сухие скучные учебные примеры или рисовать узоры «черепашкой» из языка Лого. Точная дата выхода Pi Edition пока неизвестна, но в Mojang говорят, что это произойдёт «скоро».

Total votes 32: ↑29 and ↓3+26
Comments17

Терминал с картинками на python: proof of concept

Reading time1 min
Views13K
Поскольку TermKit так и не допилили пока еще, смотреть хотя бы картинки в терминале — наверное было бы неплохо всё же (тем более что тут и тут говорят так). Да и самому мне это полезно, при работе с веб-проектами. Попробовал написать proof-of-concept-прототип. Под катом скрины, небольшое описание работы и ссылки на код.
Читать дальше →
Total votes 35: ↑30 and ↓5+25
Comments12

SteelToe — object, не стреляй мне в ногу!

Reading time2 min
Views5.1K
SteelToe — небольшой javascript сниппет, призванный решить проблему доступа к неопределенным свойствам объекта. Это особенно важно при обращении ко вложенным свойствам. В нем также реализована возможность автовивификации, что порядком упрощает создание нужных свойств. В общем — довольно полезный сахар в OOP.
Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments35

Защищённая флешка за 350 рублей своими руками

Reading time3 min
Views178K
Всем доброго времени суток. Как-то раз у меня появилась идея купить флешку, с которой не будет страшно лезть ни в огонь ни в воду, ни стираться с ней в стиральной машинке. Нашёл в интернете штуки и за тысячу рублей и за две. Денег мало, жаба задушила, пришлось что-то выдумывать.

Сразу скажу, что из инструментов у меня только паяльная станция, хотя по-хорошему хватит и обыкновенного советского паяльника. И ёще, под катом много фоток!
Читать дальше →
Total votes 119: ↑107 and ↓12+95
Comments109

О тонкостях повышения performance на С++, или как делать не надо

Reading time4 min
Views35K
image
Однажды, много лет назад, пришел ко мне клиент, и слезно умолял поручил разобраться в одном чудесном проекте, и повысить скорость работы.

Вкратце, задача была такой — есть некий робот на С++, обдирающий HTML страницы, и собранное складывающий в БД (MySQL). С массой функционала и вебом на LAMP — но это к повествованию отношения не имеет.

Предыдущая команда умудрилась на 4-ядерном Xeon в облаке получить фантастическую скорость сбора аж в 2 страницы в секунду, при 100% утилизации CPU как сборщика, так и БД на отдельном таком же сервере.

Читать дальше →
Total votes 134: ↑117 and ↓17+100
Comments65

Отечественные авторские блоги для гиков

Reading time4 min
Views20K
Бывает, что Хабр прочитан, мировые новости изучены, новая книга не начата и хочется какой-нибудь качественной технической информации — заметок от программистов, ссылок на интересные новости от западных коллег и просто гиковских штук. Как быть в этом случае? Можно обратиться к западной технической блогосфере, к счастью, там есть из чего выбрать. Но и отечественная блогосфера с программистским и гиковским уклоном способна порадовать самого придирчивого читателя. Под катом собраны ссылки на самые любопытные (по мнению автора) блоги российских IT-деятелей. На Хабре уже было что-то похожее, но без описания и четкой тематики. Приведенные здесь блоги будут интересны скорее программистам.
Читать дальше →
Total votes 110: ↑76 and ↓34+42
Comments15

«Мнемотехника» и «изучение иностранного языка» несовместимые понятия?! Давайте разберемся

Reading time13 min
Views283K
Здравствуйте, Уважаемые Хабрапользователи!



На написание данной публикации меня сподвигло возмущение от прочитанной недавно статьи одного хабраюзера, утверждающего, что мнемотехника «очень хороший способ запоминания информации, совершенно не подходящий для изучения иностранных слов». Я с этим высказыванием в корне не согласен, а потому, хотелось бы доказать обратное.
Если вам интересно, как использовать мнемотехнику для запоминания иностранных слов, то добро пожаловать под кат.
Читать дальше →
Total votes 43: ↑36 and ↓7+29
Comments26

Проблемы удаленной работы дома и пути их решения

Reading time6 min
Views217K
Стоит мне где-то упомянуть, что работаю дома, как в ответ зачастую слышатся завистливо-шутливые реплики в духе «хорошо тебе, сидишь дома, ничего не делаешь и деньги получаешь». В зависимости от настроения и собеседника, приходится либо отшучиваться, либо в сотый раз пояснять, что работаю я не меньше офисных собратьев и что проблем в удаленной работе хватает. В данной статье, как раз, хотелось бы коснуться тех из них, с которыми мне довелось столкнуться в своей практике и поделиться способами их решения.

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

Здесь не затронуты непосредственно «бизнес-вопросы»: способы поиска заказчиков, работы с ними, ценообразование и тому подобное. Акцент – на то, как организовать свою работу дома, побороть лень и не потерять при этом физическое и душевное здоровье.

Читать дальше →
Total votes 170: ↑160 and ↓10+150
Comments144

CrossOver бесплатно на год!

Reading time1 min
Views28K
С 31 октября в 09:00 по Москве в течение суток будет доступна бесплатная версия CrossOver для Мака и Линукса. Даётся год бесплатной поддержки и обновлений.

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

Бесплатно получить Crossover можно будет здесь (пока там только ссылка на блог), официальный анонс — а вот он.
Total votes 52: ↑48 and ↓4+44
Comments55

27+ ресурсов для онлайн-обучения

Reading time5 min
Views970K

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

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

Читать дальше →
Total votes 174: ↑163 and ↓11+152
Comments68

Собираем и заставляем бегать бюджетного гексапода

Reading time11 min
Views271K
Много чего предстоит сделать, прежде чем мы дойдем до вот этой картинки:



Опуская росказни о том, как именно я пришел к мысли построить гексапода (это были тонны видео на ютубе), перейду сразу к процессу выбора деталек. Это был январь 2012-го. Я сразу знал, чего я хочу от своего робота, а чего — нет. Я хотел:

— каждая нога должна иметь 3 степени свободы — 3dof (3 dimensions of freedom). Потому что более простой вариант 2dof — не дает такого ощущения насекомого, а 4dof — излишне, 3dof и так позволяет свободно перемещать кончик ноги в 3д пространстве;
— 6 ног; снова-таки, это уже не 4 (тогда робот неуклюже скачет), но и еще и не 8, как у пауков и уже чрезмерно;
— небольшой;
— дешевый;
— минимум плат и соединений;

Пост большой.
Читать дальше →
Total votes 224: ↑222 and ↓2+220
Comments60

Часы из винчестера за пару часов

Reading time4 min
Views126K
В 2009 году на Хабре я увидел фото с часами из винчестера за 60 долларов. Так как я просто торчу от железок, люблю их тискать и разглядывать, а блеск блинов из HDD меня просто завораживает, то штуковина понравилась и через какое-то время я по мере умений повторил чужой опыт. Впереди время праздников, выходных и, возможно, кто-то захочет заняться таким же рукоделием. Тем более, что все это очень просто. Дальше трафик и картинки.
image
Читать дальше →
Total votes 83: ↑65 and ↓18+47
Comments44

Оригинальный ZX Spectrum +3, ремонт привода дисковода

Reading time4 min
Views75K
В один из сентябрьских дней наткнулся я на пост с описанием родного Sinclair ZX Spectrum и задумался. А ведь это отличная идея! Я конечно знал о существовании эмуляторов на PC, IPhone и даже в браузерах, но это все не приносило удовольствия. Вроде игры те же, но вот не лежит душа. А потом понял, что лично у меня это связано с детством и то, что выпущено после 92-93 года на эту тему, меня уже не задевает. Именно в это время в моей жизни Speccy вытеснили 8-ми битные приставки Dendy, а чуть позже первый собственный 386-ой IBM PC.

image

Поэтому зашел я на http://ebay.co.uk и с ходу нашел несколько вполне приличных лотов с оригинальными британскими ZX.

Читать дальше →
Total votes 80: ↑71 and ↓9+62
Comments54

Information

Rating
4,298-th
Location
Россия
Registered
Activity