Обновить
-1
0
Павел Тетяев@Pahanini

Go, Цой, Postgres

Отправить сообщение

Матовая мечта Dell Vostro 3750

Время на прочтение5 мин
Охват и читатели12K
Давно замышлял покупку нового ноутбука, всё надеялся на чудо на ARM процессоре, но старичок Roverbook W700, который пережил со мной морозы, снег, дожди, жару и падения, начал намекать страшными артефактами на экране, что время перемен пришло и ждать больше уже нельзя. И вот чуть больше недели назад я стал обладателем матового монстра — Dell Vostro 3750. Почему я выбрал именно его? Читайте далее и берегитесь кучи картинок…
Читать дальше →

Вышел релиз популярного магазина OpenCart v1.5.0 RC1

Время на прочтение2 мин
Охват и читатели6K
Один из самых популярных и динамично развивающихся OpenSource проектов для электронной коммерции — OpenCart выпустил новую версию v1.5.0 RC1 для финального тестирования. Я беглым взглядом пробежался по меню настройки и выделил изменения по сравнению с версией 1.4.x.
Читать дальше →

PHP — оптимизация многочисленных array_merge()

Время на прочтение2 мин
Охват и читатели1.9K
Небольшой хинт, о котором я собираюсь сейчас рассказать, я узнал уже довольно давно. Но, поскольку вот только что обнаружил, что именно в этом месте оптимизация помогла сэкономить изрядное количество времени уже в текущем проекте, то решил поделиться с общественностью (а мужики-то не знают, ага).

Буду краток, вот тестовый скрипт и то, что он выводит:

$start = microtime(true);
$res1 = array();
for ($i = 0; $i < 1000; $i++) {
        $res1 = array_merge($res1, array(1, 2, 3));
}
echo "1000 merges: " . ceil((microtime(true) - $start) * 1000) . "ms\n";
 
$start = microtime(true);
$toMerge = array();
for ($i = 0; $i < 1000; $i++) {
        $toMerge[] = array(1, 2, 3); 
}
$res2 = call_user_func_array('array_merge', $toMerge);
echo "call_user_func_array('array_merge',..): " . ceil((microtime(true) - $start) * 1000) . "ms\n";
 
echo "Is it true that the two arrays are equal? It is ";
var_export($res2 === $res1);
echo ".\n";

~ % php ~/tmp/array_merge.php
1000 merges: 980ms
call_user_func_array('array_merge',..): 11ms
Is it true that the two arrays are equal? It is true.


Экономия солидная. Авось кому пригодится.

Мастерство целевого использования ключевых слов и оптимизации страниц

Время на прочтение8 мин
Охват и читатели9.9K
Пост опубликован по просьбе одного хорошего человека.

Как создать максимально оптимизированную веб-страницу?



Если вы СЕОшник (SEO оптимизатор), то этот вопрос вы часто слышите. К сожалению, однозначного ответа нет. Но, тем не менее, существует набор полезных приемов, которые помогут приблизиться к ответу на этот вопрос. В данном посте я поделюсь нашими лучшими рекомендациями для достижения «совершенства» оптимизации страницы и расположения ключевых слов. Или, по крайней мере, что-то близкое к этому. Некоторые из наших советов подтверждены данными, результатами исследований и тестирований, другие основаны на интуиции и общем опыте. Как и со всеми СЕО советами, мы рекомендуем постоянное тестирование и оттачивание, ну а данный пост поможет вам начать процесс оптимизации.
Читать дальше →

Continuous Delivery в Яндексе. Как разогнать свой цикл разработки, используя только Open Source решения

Время на прочтение8 мин
Охват и читатели59K
Перед тестированием всегда стояли и стоят две задачи – помочь команде поддерживать высокий уровень качества разработки и делать это, не задерживая весь процесс. И это справедливо не только для наших проектов в Яндексе, где мы работаем над очень большим количеством сервисов. Часто основная задача и вовсе формулируется как увеличение скорости тестирования при сохранении должного уровня качества. Скорость процесса разработки, приверженность ценностям частых и быстрых релизов – это основополагающие факторы для успеха любого продукта. У команды больше возможностей маневра, команда быстрее находит и исправляет ошибки, быстрее получает фидбек. Как же ускоряться, не теряя качества, как достичь дзена непрерывной доставки изменений?



Сегодня мы покажем, что Continuous Delivery — это просто и весело! А пользу от него можно получить, встроив его даже частично. Мы в тестировании Яндекса уже несколько лет используем подобный подход для наших библиотек с открытым исходным кодом — Allure Framework или Yandex QATools. Процесс прост, значительно масштабируем и может применяться как для огромных команд из одного человека, так и для маленьких командочек из десятков человек. А самое главное — весь инструментарий доступен в Open Source!

Кстати, до 30 сентября можно подать заявку и поступить в нашу Школу автоматизации процессов разработки в Питере. Обучение в ней бесплатное и будет состоять не только из курса лекций — обязательным этапом станет командная работа над учебным проектом.

А теперь вернёмся к теме. Представьте картину: уютное рабочее место, вы пишете код, добавляете юнит-тесты и отправляете изменения в систему контроля версий, а через пару часов они «выезжают» на боевые сервера. И все при этом работает.
Читать дальше →

Анализ рендеринга через Skia Debugger: как можно найти самые дорогие для отрисовки элементы

Время на прочтение4 мин
Охват и читатели23K
Доброго дня, недавно я решал проблему притормаживания скролла на страницах Почты Mail.Ru. Особенно эта проблема была заметна на retina-дисплеях. После простого анализа я пришел к выводу, что одна из основных проблем — это медленная отрисовка страницы.

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

Как и многие подобные проблемы оптимизации, данную проблему можно решить множеством способов. Я взялся за оптимизацию рендеринга, так как на нее затрачивалось значительное количество времени. Тем самым, я достаточно быстро смог бы получить прирост производительности и, соответственно, улучшить плавность скролла, ускорив отрисовку.


Читать дальше →

Настоящее модульное тестирование в AngularJS

Время на прочтение12 мин
Охват и читатели43K
AngularJS молод и горяч, когда дело доходит до современной веб разработки. Его уникальный подход к компиляции HTML и двусторонней привязки данных делает его эффективным инструментом для создания клиентских веб приложений. Когда я узнал что Quick Left (студия в которой работает автор. прим. пер.) будет использовать его для создания приложения для одного из наших клиентов, я был взволнован и постарался узнать о angular столько сколько мог. Я обошел весь интернет, каждый урок и руководство, которые смог найти в Google. Они были реально полезны в понимании работы директив, шаблонов, компиляции и цикла обработки событий (digest), но когда дело дошло до тестирования, я обнаружил что эта тема была просто упущена.

Я обучался подходу TDD (Разработка через тестирование) и я чувствую себя не в своей тарелке без подхода «Красный-Зеленый-Рефакторинг». Так как мы все еще разбирались что к чему в тестировании в Angular, команде иногда приходилось полагаться на подход «тестирование-после». Это начало нервировать меня, поэтому я решил сосредоточится на тестировании. Я потратил на это недели, и в скором времени покрытие тестами поднялось с 40% до 86% (Кстати, если вы еще этого не делали, можете попробовать Istabul для проверки покрытия кода в вашем JS приложении).

Читать дальше →

Топ-10 игр и Топ-10 приложений для Ubuntu по версии репозитория UALinux

Время на прочтение2 мин
Охват и читатели119K
image
Как-то на Хабре два года назад было несколько новостей (1, 2, 3, 4) про Топ10 популярных игр и приложений в одном из сторонних репозиториев для Ubuntu, и после этого больше особо так и не попадались публикации о других топах игр и приложений.
Я решил опять к ним заглянуть и посмотреть как обстоят дела, и вот какие интересные изменения я заметил:
Читать дальше →

Как мы строили офис мечты с блэкджеком и пуфиками (почти за копейки)

Время на прочтение6 мин
Охват и читатели113K
Мы не можем себе это позволить. Сколько раз за свою карьеру вы слышали такую фразу? Как правило, эти пять слов призваны напомнить собеседнику, что у компании просто не хватает на все денег. Хотя на самом деле в большинстве случаев деньги тут совершенно не при чем. Мы в этом убедились на собственном опыте, когда строили себе дом для Альфа-Лаборатории. Вот этот вот.





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

При этом практически все, разглядывая пуфики, супергероев на стенах и игровую, думают примерно одно и то же. Не исключено, что вы думаете так же, глядя на эти фотографии: «Ну, конечно, Альфа-Банк может себе такое позволить». Подразумевается, что в инновационную Альфа-Лабораторию вбуханы какие-то баснословные деньги.

На самом же деле организация этого пространства стоила нам дешевле, чем стандартный офис, который вряд ли смог украсить рубрику «Интерьер недели» на каком-нибудь популярном хиптсерском сайте.


Когда мы рассказываем об этом, у людей в глазах читается немой вопрос, что-то вроде: «Эй, а почему тогда я, как и большинство людей на планете, до сих пор работаю в мышиной норе?» Ну что сказать. Дело уж точно не в деньгах.

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

Читать дальше →

15 малоизвестных команд Linux

Время на прочтение3 мин
Охват и читатели321K
Каждому разработчику в определенной степени следует овладеть навыками работы в терминале. Физически находиться у компьютера не всегда возможно, поэтому приходится подключаться удаленно. И действительно, GUI-программы вполне могут с этим с правиться, но зачастую они работают медленнее, чем получение доступа через тот же терминал (в конце концов, это лишь обмен текстом).
Читать дальше →

Мобильные приложения для путешествий

Время на прочтение9 мин
Охват и читатели94K

Сезон отпусков начнётся в ближайшие недели. Продажи всевозможных гаджетов, полезных в путешествиях, неуклонно растут. Фотоаппараты, планшеты, смартфоны, ридеры, плееры закупаются в предвкушении моря, пляжей, исторических достопримечательностей, джунглей, гор и множества других прекрасных мест на нашей планете. Но при этом многие счастливые обладатели планшетов и смартфонов упускают такой немаловажный момент, как полезные и удобные приложения, способные существенно облегчить, или украсить, или дополнить новыми впечатлениями ваш отпуск. Поэтому мы решили предложить вашему вниманию подборку ряда приложения для путешественников.
Читать дальше →

Понимание областей видимости или Scope в AngularJS

Время на прочтение10 мин
Охват и читатели79K
В Ангуляре, дочерняя область видимости обычно прототипически наследуется от родительской. Единственным исключением является директива, в которой используется scope: { ... }, создающая «изолированную» область видимости, не наследуемую прототипически. Такая конструкция часто используется при создании директив для компонентов «многоразового использования»
Читать дальше →

В чем разница между factory и provider в AngularJS (на пальцах)

Время на прочтение2 мин
Охват и читатели53K
Как-то давно переводил статью «Понимание типов сервисов в AngularJS (constant, value, factory, service, provider)». На практике, конечно, не всё пригождается, поэтому в рамках понижения порога вхождения в Ангуляр, объясню проще.
Читать дальше →

Индексирование AJAX-сайтов

Время на прочтение9 мин
Охват и читатели27K
При разработке интерфейса одного веб приложения возникла задача сделать странички, формируемые AJAX запросом, индексируемыми поисковиками. У Яндекса и Google есть механизм для индексации таких страниц (https://developers.google.com/webmasters/ajax-crawling/ http://help.yandex.ru/webmaster/robot-workings/ajax-indexing.xml). Суть довольно проста, чтобы сообщить роботу о HTML версии страницы, в тело нужно включить тег . Этот тег можно использовать на всех AJAX страницах. HTML версия должна быть доступна по адресу www.example.com/чтотоеще?_escaped_fragment_=. То есть, если у нас есть страница http://widjer.net/posts/posts-430033, то статическая версия должна иметь адрес http://widjer.net/posts/posts-430033?_escaped_fragment_=.
Чтобы не быть обвиненным в клоакинге, динамическая и статическая версии не должны отличаться, поэтому возникает необходимость создания слепков ajax страниц, о чем и хотелось бы рассказать.
Читать дальше →

Мне кажется, я начал понимать, что ты имела в виду!

Время на прочтение7 мин
Охват и читатели34K
Опечататься дело нехитрое; опечататься в поисковом запросе так и вдвойне. Почитай все большие веб-поисковики сегодня умеют корректировать ошибки в ключевых словах во-1х и подсказывать запросы во-2х; вслед за ними того же хочется поискам поменьше. Обе штуки можно ловко реализовать при помощи открытого поисковика по кличке Sphinx; в этом посте расскажу, как конкретно.

Ну, за did you mean («что ты имела в виду») и прочий query completion («уж не Васю ли ты ищешь»).
Читать дальше →

Шпаргалка по С++11 для печати на кружке

Время на прочтение1 мин
Охват и читатели47K


Вот захотелось мне такое сделать и я сделал.
Картинка под спойлером


Полноразмерная картинка (на случай если Хабр пережмёт картинку под спойлером). Подходит для печати на стандартной кружке, площадь поверхности 20 х 8.8 см, 300 dpi (ребята в магазине сувениров сказали, что это стандарт).
Шпаргалка, послужившая основой

P.S. Да, я в курсе, что у меня не вышло вместить 1300-cтраничный стандарт на одну кружку. В следующий раз точно получится, я уверен.

Как устроена apache cassandra

Время на прочтение13 мин
Охват и читатели261K
Кассандра
В этом топике я хотел бы рассказать о том, как устроена кассандра (cassandra) — децентрализованная, отказоустойчивая и надёжная база данных “ключ-значение”. Хранилище само позаботится о проблемах наличия единой точки отказа (single point of failure), отказа серверов и о распределении данных между узлами кластера (cluster node). При чем, как в случае размещения серверов в одном центре обработки данных (data center), так и в конфигурации со многими центрами обработки данных, разделенных расстояниями и, соответственно, сетевыми задержками. Под надёжностью понимается итоговая согласованность (eventual consistency) данных с возможностью установки уровня согласования данных (tune consistency) каждого запроса.

NoSQL базы данных требуют в целом большего понимания их внутреннего устройства чем SQL. Эта статья будет описывать базовое строение, а в следующих статьях можно будет рассмотреть: CQL и интерфейс программирования; техники проектирования и оптимизации; особенности кластеров размещённых в многих центрах обработки данных.
Дорогу осилит идущий...

Что интересного я узнал на DevConf 2012

Время на прочтение4 мин
Охват и читатели2.5K
Привет, Хабрасообщество!
По следам недавно прошедшей конференции DevConf 2012 хочу поделиться записями из своего блокнота, которые показались лично мне наиболее интересными и полезными. Возможно, кому-то все это хорошо известно. Поскольку доклады шли одновременно в нескольких залах, то все их посетить было невозможно, поэтому ваши дополнения с удовольствием почитаю в комментариях.
Темы, которые прежде всего интересовали меня, это:
— развертывание системы и непрерывная интеграция (Continuous Integration)
— PHP 5.4, PHPUnit, Yii
— тестирование в javascript
Читать дальше →

RVM — подробно

Время на прочтение4 мин
Охват и читатели99K

RVM — Ruby Version Manager
Программа для управления версиями Ruby.

Как быть если один проект использует Ruby 1.8.7, а другой 1.9.2? А что если при этом у вас 2 проекта под версией 1.9.2, но с разными наборами гемов? Хотелось бы вам иметь отдельные наборы gem's для каждого проекта?

Основные задачи:
1. Физическое разделение версий ruby и наборов гемсетов
2. Возможность иметь несколько версий ruby и переключаться между ними
3. Возможность для каждой версии ruby иметь несколько gemsets — наборов gem's и переключаться между ними

Под катом будут описаны:
1. Установка RVM
2. Работа с разными версиями Ruby
3. Работа с gemsets
4. Задание окружения под отдельный проект с помощью .rvmrc
5. Команды RVM которые могут оказаться полезными
6. Шпаргалка по основным командам RVM

Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Екатеринбург, Свердловская обл., Россия
Зарегистрирован
Активность