Обновить
-6
Unknown user @AGvinread⁠-⁠only

Пользователь

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

jQuery для начинающих

Время на прочтение9 мин
Количество просмотров517K
jQuery Logo

jQuery — это замечательный JavaScript Framework, который подкупает своей простотой в понимании и удобством в использовании. Но изучение надо с чего-то начинать, и лично моё мнение — лучше всего начинать с наглядных примеров, и они далее…

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

Процедурное текстурирование: генерация текстуры булыжника

Время на прочтение9 мин
Количество просмотров23K


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

Игра в машинки по-взрослому

Время на прочтение5 мин
Количество просмотров12K
Что общего может быть между грузоперевозками, уборкой улиц, бурением скважин и работой служебного транспорта? Все они обеспечивают выполнение необходимых задач и потому их работа должна встраиваться в уже отлаженную систему вашей компании.
Сегодня мы расскажем о том, как мы придумали решить эту задачу.


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

Декораторы в PHP. Реализация расширения

Время на прочтение11 мин
Количество просмотров12K
По результатам опроса в первой статье, решено было сделать обзор реализации расширения. К этому моменту в угоду существующим IDE немного изменился синтаксис, который, пожалуй, был наиболее обсуждаемым моментом.
Это не еще-одна-статья-о-hello-world-расширении, т.к. желающим разобраться в основах легко найти массу материалов как на самом Хабре, так и в русскоязычном RTFG.
Статья о предпосылках, реализации и подводных камнях. В ней будет мало PHP, в основном C.
Запасаемся попкорном и расчехляем gdb и valgrind

Блокировки сессий в веб-проектах — выбираем эффективное оружие

Время на прочтение4 мин
Количество просмотров20K
Всем привет!

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

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

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

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

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

Создание npm-пакета

Время на прочтение2 мин
Количество просмотров65K


Типичная ситуация — в проекте существует некий модуль. Модуль развивается, становится самостоятельным элементом и копируется в другой проект. Потом еще один проект. И еще.
В каждом проекте модуль обновляется и улучшается, и, в какой-то момент, становится не понятно, где актуальная версия. Да ладно, «не понятно где актуальная версия»! Вполне возможно, что в каждом проекте у модуля будут свои модификации, в которые будет достаточно сложно привести в порядок для использования в следующем проекте.
Вполне можно ограничиться созданием отдельного репозитория для модуля, например на GitHub или Bitbucket. Но добавлять репозиторий как субмодуль для GIT — это путь к приключениям.
Но можно пойти дальше, и создать на основе такого модуля npm-пакет. Работать с такими пакетами очень просто. Установить npm-пакет можно с помощью команды npm install, а обновить с помощью npm update.
Подробности

4 ошибки, которые я допустил как технический директор

Время на прочтение6 мин
Количество просмотров148K
На самом деле, ошибок было, безусловно, больше, но сейчас, спустя два года после начала работы в должности технического директора одного крупного мобильного аутсорсера, именно эти 4 кажутся мне главными.

На позицию CTO я пришёл не через стандартный путь “Developer -> Senior -> Team lead -> CTO”, а через гуманитарный вариант – “PM -> Senior PM -> CTO”. В этом были как свои плюсы, так и минусы, и трудно сказать, чего больше, но персональных вызовов хватало всегда и техническое прошлое часто спасало, однако, сейчас не об этом.

4. Вынужденные оценки


Помимо того, что я вынес в подзаголовок, сразу скажу, что первой ошибкой было всё-таки желание участвовать вообще во всех оценках, что отнимало у меня 60-70% времени поначалу. Постепенно я от этого отказался и стал заниматься только крупными лидами, оставив более мелкие оценки полностью на откуп тимлидам, которым научился доверять.

Оценка потенциальных проектов в аутсорсе – это то, от чего сильно меняется восприятие процесса разработки и может поехать чердак.
Читать дальше →

Простой способ переноса больших файлов по частям

Время на прочтение1 мин
Количество просмотров31K
Бывает, что необходимо перенести большой файл, например, на flash с файловой системой FAT16/32 или загрузить на сервер по частям. На помощь придут две программы, которые, как правило, присутствуют в любом дистрибутиве Linux и Mac OS.

Команда split

$ split -a 1 -d -b 4000M sample.iso sample.iso.part

разобьет исходный файл sample.iso на части по 4 Гбайта (максимальный размер файла в FAT), каждая из которых будет именоваться как sample.iso.partN, где N = 0, 1, 2,… .
Собрать части воедино на целевой системе поможет команда cat:

$ cat sample.iso.part* > sample.iso

Применение маски приведет к тому, что утилита cat переберет все файлы по порядку, начиная с sample.iso.part0.

Этот наглядный пример показывает, как можно перенести большой файл. Более подробную информацию по использованию cat и split можно получить в справке (--help) и руководствам (man) к программам.

Записи докладов с конференций по высоким нагрузкам HPC

Время на прочтение1 мин
Количество просмотров17K
Записи с последней конференции HPC — High Performance Conference, состоявшейся 6 декабря 2012, никак не анонсировались, хотя заслуживают внимания.

Под катом видеозаписи следующих докладов:

  1. Практические вопросы использования NOSQL в высоконагруженном проекте
    Дмитрий Ананьев, Руководитель группы разработки новых сервисов, Мамба
  2. Как работает «умная живая миграция» в Jelastic
  3. Дмитрий Лазаренко, Директор R&D, Jelastic Russia
  4. Parallels Cloud Server как платформа для высокопроизводительных систем
    Дмитрий Мишин, Team-lead отдела серверной виртуализации, Parallels
  5. Облачная платформа Windows Azure для высоконагруженных проектов
    Владимир Юнев, Technical evangelist, DPE, Microsoft Russia


и одно видео с фестиваля профессионального развития BitByte:

  1. Badoo Desktop: оптимизация приложения на миллион юзеров
    Руководитель проекта десктопных приложений компании Badoo.



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

NoSQL и Big Data – обман трудящихся?

Время на прочтение4 мин
Количество просмотров71K
imageНедавно нам удалось пообщаться с великим Монти — Майклом Видениусом, автором оригинальной версии открытой СУБД MySQL, который в настоящее время работает над ее ответвлением, MariaDB. (Кстати, обе эти базы поддерживаются в Jelastic.)

Как известно, мир производит и обрабатывает все больше данных (так называемый феномен «Big Data»). Общепринято мнение, что данных теперь так много, что обрабатывать их с помощью традиционных баз данных и программных методов трудно или невозможно. Это вызвало волну нереляционных баз данных (NoSQL), в которых упор делается на высокую масштабируемость. Эксперт в области баз данных, Монти, поделился с нами своими мыслями о текущем и будущем состоянии SQL, NoSQL и Big Data. Некоторые его ответы были несколько неожиданными, так что мы с радостью приводим здесь русский перевод расшифровки нашей беседы:
Читать дальше →

Traits в php 5.4. Разбираем детали реализации

Время на прочтение8 мин
Количество просмотров53K
Совсем недавно вышла первая beta php 5.4, а пока я писал топик подоспела и вторая. Одно из нововведений в 5.4 – это traits (типажи). Предлагаю разобраться во всех деталях в том, что же типажи из себя представляют в php.

Простой пример типажа, чтобы не заглядывать в Википедею:
//определение типажа
trait Pprint 
{
    public function whoAmI()
    {
        return get_class($this) . ': ' . (string) $this;
    }
}

class Human 
{
    use Pprint; //подключаем типаж, ключевое слово use

    protected $_name = 'unknown';
    
    public function __construct($name)
    {
        $this->_name = $name;
    }

    public function __toString()
    {
        return (string) $this->_name;
    }   
}

$a = new Human('Nikita');
echo $a->whoAmI(), PHP_EOL; //=> Human: Nikita

Как видно, к классу Human было добавлено поведение из типажа Pprint.

Но во всём есть свои детали.
О них далее

Дамп memcached на диск

Время на прочтение3 мин
Количество просмотров9.3K
API взаимодействия с memcached представлен во всех популярных языках, поэтому в задачах кэширования это наиболее используемый инструмент. В случае когда не требуется ничего кроме кэширования, видимо, — самый оправданный.
Одна из проблем с которой я столкнулся при работе с memcached — невозможность сбросить его состояние на диск. Существующие решения либо не являлись простым кэшом (представляя скорее БД), либо не были настолько же стабильны и поддерживаемы. Вдобавок имелось желание «покодить», поэтому какой-то из готовых вариантов я мог банально упустить.
Читать дальше →

Алгоритмы борьбы украинских айтишников с НДС

Время на прочтение2 мин
Количество просмотров7.1K
Налоговыми льготами украинских айтишников пытались осчастливить неоднократно: и освобождением от НДС в 2011 году, и внезапным, без объявления войны, возвратом НДС в середине этого же года, и льготами по налогу на прибыль с 2012 года, и мутной процедурой получения этих льгот.

Стремление властей организовать и возглавить ИТ-отрасль понятна: один только экспорт программ достиг 1,4 миллиарда долларов в 2012 году. И вся эта вкусность рассредоточена по десяткам тысяч программистов-единоналожников. Которые платят бюджету в лучшем случае 5% с дохода. Даже если де-факто они являются работниками на ИТ-предприятии.

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

А вот с 1 января 2013 года ряду ИТ-предприятий пришлось несладко. Их загнали в цуцванг:
— согласно разделу ХХ Налогового кодекса поставки программной продукции освободили от уплаты НДС;
— письмом налоговой № 6239/10/06-408 от 02.10.12 «разъяснили», что эта льгота действует только для зарегистрированных субъектов программной индустрии;
— зарегистрироваться субъектом программной индустрии практически невозможно.
Короче, хоть плати НДС с продажи программ, хоть не плати, серьезных проблем не избежать.

ВЫ ДУМАЕТЕ ОНИ НЕ ВЫКРУТИЛИСЬ? ЕЩЕ КАК!

Изучив опыт поставщиков массового программного обеспечения Украины, мы были восхищены их изобретательностью:

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

Как стать кукловодом или Puppet для начинающих

Время на прочтение7 мин
Количество просмотров110K
Здравствуйте.
image
Этот топик открывает цикл статей по использованию системы управления конфигурацией Puppet.

Что такое система управления конфигурацией?


Предположим, что у вас есть парк серверов, выполняющих различные задачи. Пока серверов мало и вы не растёте, вы легко настраиваете каждый сервер вручную. Устанавливаете ОС (может быть, автоматизированно), добавляете пользователей, устанавливаете софт, вводя команды в консоль, настраиваете сервисы, правите конфиги ваших любимых текстовых редакторов (nanorc, vimrc), выставляете на них одинаковые настройки DNS-сервера, устанавливаете агент системы мониторинга, настраиваете syslog для централизованного сбора логов… Словом, работы довольно много и она не особенно интересна.
Как спастись от рутины?

Приемы написания скриптов на Bash. #2

Время на прочтение11 мин
Количество просмотров28K
Моя прошлая статья Приемы написания скриптов на Bash вызвала жаркие дебаты в комментариях. Основной ее посыл был в использовании библиотеки функций. Кроме того я описал способ разбора параметров в Bash. Благодарю всех за конструктивные комментарии. Обращаю Ваше внимание, что статья предполагается для широкого круга читателей, а не адресована исключительно системным администраторам.

Продолжим начатое, и на реальном примере дополним подход к разбору параметров и унификации функционала скриптов.
Читать дальше →

Collectd — Следим за системой с минимальными затратами. Настройка и использование нотификаций

Время на прочтение8 мин
Количество просмотров44K

Что это такое?


Collectd — это небольшой демон, который каждые 10 секунд собирает
статистку об использовании ресурсов системы. Есть возможность сбора
статистики для нескольких хостов и отсылка её на сервер, который
занимается отрисовкой красивых графиков.

Основное отличие этого сборщика в том, что он работает по принципу push, а не poll/pull. Т.е. он «висит» и слушает, а сервера ему сами статистику присылают.

Что мы будем делать?


Что я хочу описать в этом посте:
  • Установка.
  • Настройка общая.
  • Настройка отдельных плагинов.
  • Настройка slave серверов, которые будут слать нам на главный сервер свою статистику работы.
  • Настройка нотификаций по email.

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

Inline-block как замена float

Время на прочтение2 мин
Количество просмотров147K
Полгода назад я делал перевод статьи на Хабре Подробно о свойстве float. В этот раз взглянем на него немного под другим углом. При разработке сайта мы часто используем float'ы для позиционирования некоторых блоков на странице, например сайдабара. Но так ли это необходимо?

Float не всегда удобен: например при верстке сетки с изображением. Иногда уместно применять inline-block, который имитирует поведение float'а.

Что такое inline-block?


Обычная структура блочного элемента:



Inline-block — это значение, которые можно назначить свойству display. Название происходит от некоторых характеристик как строчного, так и блочного элементов.
Читать дальше →

Производительность веб-шрифтов

Время на прочтение3 мин
Количество просмотров42K


Применение веб-шрифтов становится все популярнее: согласно HTTP Archive, за последний год число сайтов, использующих дополнительные шрифты, выросло вдвое — с 6 до 12%.

Слабым местом веб-шрифтов является производительность, однако ситуация постепенно меняется в лучшую сторону: появляются более совершенные методы сжатия, улучшается поддержка браузерами, unicode, отдельные наборы шрифтов и т.д.
Читать дальше →

Геотаргетинг nginx, частный случай

Время на прочтение4 мин
Количество просмотров16K
Возникла задача сделать геотаргетинг для регионов России на новостном сайте, т.е. при заходе на главную страницу, должно происходить перенаправление на региональную страницу сайта с адресами вида: region/[номер региона], причем перенаправление клиента должно осуществляться на nginx-е без передачи данных на апач, в противном случае это лишняя ненужная нагрузка на сервер.
Читать дальше →

Phalcon — скомпилированный PHP MVC Framework

Время на прочтение7 мин
Количество просмотров56K

Создание скомпилированных MVC фреймворков для PHP не раз приходила на ум кодерам.

Достоинства такого подхода:
  • Высокая производительность
  • Малая нагрузка файловой системы
  • Меньший расход памяти (при строгой типизированности)
  • Частичная обработка данных без интерпритации

И само собой не менее явные недостатки:
  • Если Вы не знаете C, то Вы полностью зависите от разработчиков
  • Проект может в любую секунду сдуться
  • В зависимости от архитектуры, часть модулей все равно приходится писать самому, что уменьшает выигрыш

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

Информация

В рейтинге
Не участвует
Откуда
Австрия
Дата рождения
Зарегистрирован
Активность