Как стать автором
Поиск
Написать публикацию
Обновить
0
0
Вова Рудный @wova

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

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

Небольшой лайфхак для uTorrent, помогающий разгрести мусор в папке закачек

Время на прочтение2 мин
Количество просмотров64K
Наверняка у многих из нас на компе есть папочка «Downloads» (или «Unsorted», или какая-нибудь еще), куда мы сохраняем скачанные торрентом файлы. Обычно в этой папке у меня творится сущий ад и бардак, ибо что-то я еще не послушал, что-то не посмотрел, а что-то попросту забыл удалить или оставил раздаваться, ибо перехешировать лень. В этом небольшом топике я предлагаю простой способ (для Windows) использования меток в uTorrent, чтобы автоматизировать процесс раскидывания файлов по категориям.
Читать дальше →

Redis — высокопроизводительное хранилище данных

Время на прочтение2 мин
Количество просмотров102K
Бодрый день, хаброчеловеки!

Что такое Redis?


Redis — это высокопроизводительное нереляционное распределённое хранилище данных. В отличие от Memcached, который может в любой момент удалить ваши данные, вытесняя старые записи новыми, Redis хранит информацию постоянно, таким образом он похож на MemcacheDB.

Чем Redis отличается от существующих решений?


API для работы с Memcached (MemcacheDB) позволяет хранить массивы, но эти массивы будут сериализованы и сохранены как строки, таким образом атомарные операции над такими массивами не возможны.
Redis позволяет хранить как строки, так и массивы, к которым можно применять атомарные операции pop / push, делать выборки из таких массивов, выполнять сортировку элементов, получать объединения и пересечения массивов.

Производительность


110000 запросов SET в секунду, 81000 запросов GET в секунду на Linux-сервере начального уровня (тесты).

Высокая скорость работы Redis обеспечивается тем, что данные хранятся в оперативной памяти и сохраняются на диск либо через равные промежутки времени, либо при превышении определённого количества не сохранённых запросов. Из этого вытекает, что используя Redis, вы можете потерять результаты нескольких последних запросов, что вполне приемлимо для большинства веб-приложений, учитывая, что обращение к Redis по скорости сравнимо с обращением к оперативной памяти. Тем не менее, потерь можно избежать через избыточность — Redis поддерживает неблокирующую master-slave репликацию.

Sharding


Redis, как и Memcached, может работать как распределённое хранилище на многих физических серверах. Такой функционал реализуется в клиентских библиотеках, и к сожалению, «из коробки» этот функционал реализован пока только в Ruby API, однако это не мешает вам хешировать ключ самостоятельно и получать ID сервера, к которому с этим ключом обращаться.

API


API доступно для следующих языков:
  • Ruby
  • Python
  • PHP
  • Erlang
  • Tcl
  • Perl
  • Lua
  • Java


API для PHP доступно как в виде модуля, написанного на C, так и в виде PHP5 класса, который общается с Redis-сервером через сокеты, таким образом не требуется устанавливать модуль.
Кроме того существует PHP5 класс от отечественного разрабочика (с именем, заслуживающим доверия. Я серьёзно.) — IMemcacheClient. (Спасибо DYPA за наводку)

Перспективы развития


Разработка ведётся очень активно, комиты происходят почти каждый день, сейчас доступна версия Redis 0.900 (1.0 release candidate 1), которая очень скоро станет версией 1.0
В ближайшем будущем авторы обещают внедрить разные интересные фичи, в том числе и сжатие данных.

Лицензия и поддерживаемые платформы


Redis — написан на ANSI C и работает на большинстве POSIX-систем (Linux, MacOS X). Это бесплатное открытое ПО под BSD лицензией =)

Up: Rediska — удобный PHP-клиент для key-value базы Redis. Оф.сайт.

Redis — продвинутое key-value хранилище. Опыт применения в нагруженных проектах

Время на прочтение2 мин
Количество просмотров7.8K
Мы уже пол года успешно используем Redis в своих highload проектах. За это время было выработано много удачных решений на Redis для задач, с которыми сталкиваются разработчики большинства крупных проектов. Примерами этих решений я и хотел бы поделиться на предстоящей DEVCONF, чтобы на практике показать возможности, преимущества и слабые стороны Redis.
Содержание доклада...

Extend Grid — делаем жизнь верстальщика немного проще

Время на прочтение3 мин
Количество просмотров4.3K
Само понятие модульной сетки, за последние несколько лет стало чрезвычайно модным. В первую очередь у дизайнеров. И во-вторую очередь у верстальщиков.

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

Немного про модульные сетки

Модульная система вёрстки — система вёрстки, при которой основой композиции полос и разворотов становится модульная сетка с определенным шагом (модулем), одинаковым или разным по горизонтали и вертикали. По мотивам Википедии.

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

Защита от повторной обработки POST запроса

Время на прочтение1 мин
Количество просмотров8.2K
Навеяно этой темой.

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

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

Устанавливаем и настраиваем cGit на Ubuntu

Время на прочтение5 мин
Количество просмотров13K
С помощью данной статьи (пошаговой инструкции) вы сможете сделать себе собственный Git репозиторий, с веб-интерфейсом на базе cGit.
подробности инструкции

Тонкости использования селекторов аттрибутов в CSS

Время на прочтение4 мин
Количество просмотров35K
CSS может связываться с HTML элементами используя любые из его атрибутов. Вы наверняка знаете о классах и ID. Проверим это в HTML:
<h2 id="first-title" class="magical" rel="friend">David Walsh</h2>

Этот один элемент имеет три аттрибута: ID, class и rel. Для выбора элемента в CSS вы можете использовать селектор ID (#first-title) и селектор class (.magical). Но знаете ли вы, что можно использовать для выбора атрибут rel? Это так называемый селектор атрибута:
h2[rel=friend] {
  /* woohoo! */
}

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

Использование SVG для гибких, расширяемых и занятных фонов. Часть первая

Время на прочтение5 мин
Количество просмотров12K
Решил сделать вольно-раздолбайский перевод статьи о SVG с ALA. Это перевод первой части, в ближайшее время постараюсь перевести вторую.

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

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

PHPUnit и его Database Extension. Беглый взгляд

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

Пространное и многословное вступление


Уже чуть более года в проекте где я работаю ходят разговоры о модульном тестировании. Помимо разговоров неоднократно делались попытки превратить эти разговоры в жизнь. Все попытки на данный момент закончились тем, что ни один ранее написанный модульный тест не прогоняется в процессе разработки. Все они лежат мертвым кодом в недрах нашей системы. Представили такой себе постсоветский индастриэл? Торчащие колонны из земли, ржавая арматура на фоне хмурого неба:)

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

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

Javascript виджет авторизации OpenID

Время на прочтение3 мин
Количество просмотров7.1K
Где то полгода назад я сильно увлекся OpenID и всем что с ним связанно. Моим главным занятием в это время стало — неспешное чтение спецификаций, форумов, блогов и хабрапостов OpenID тематики.

Все знания, которые мной были получены за это время, я «материализовал» в проекте компании, в которой собственно я работаю.

Изучая спецификацию OpenID и прочих его расширениях (SREG, AX) и надстройках, мне пришла идея разработать JavaScript виджет со своим API-прослойкой, в помощь другим разработчикам нежелающим «коротать» дни и ночи изучая спеки различных способов авторизации и их расширений.

Собственно об этом далее.
Читать дальше →

Как легально получать деньги из-за пределов России

Время на прочтение5 мин
Количество просмотров202K
Дано: заказчик за рубежом, желающий работать с Вами и платить вам евро или доллары.
Найти: оптимальный способ организовать работу с ним, чтобы платить налоги и спать спокойно.

Сразу скажу, что получение денег на пластиковую карту без уплаты налогов может вылиться в серьезные проблемы (про ответственность написано в конце топика). Объяснения, что деньги «от бабушки внучку на мороженное» при суммах больше 10К$ в год уже не прокатывают, особенно если в реквизитах «бабушки» будет стоять что-то вроде «GMBH Star Development» Вероятность того, что возьмут за задницу достаточно высокая и поэтому лучше не рисковать и делать все по Закону, тем более, что ничего сложного в этом нет
Читать дальше →

Git on Windows in Technicolor

Время на прочтение1 мин
Количество просмотров1.7K
При работе с git под windows не покидало ощущение, что чего-то не хватает, не столь комфортно с ним работать как на других системах.
Оказывается, в msysgit по умолчанию отключен цветной вывод.

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

Редирект после POST запроса

Время на прочтение2 мин
Количество просмотров48K
Каждый веб-разработчик знает, что после POST сабмита формы желательно сделать редирект, чтобы предотвратить повторную отправку данных, когда пользователь захочет обновить страницу. В основном это критически необходимая операция, так как данные формы могут сохраняться в базе данных или участвовать в платёжной транзакции. И тогда данные не только продублируются, но и спишутся лишние деньги.

Но речь не о деньгах, а о правильном редиректе…
Читать дальше →

Отрицательная сторона передачи значений по ссылкам

Время на прочтение3 мин
Количество просмотров12K
Без всякой лирики, прямо: использование ссылок для передачи значений снижает производительность. Мы думаем, что вместо того что бы передавать копию переменной, сценарий передает саму переменную, исходя из чего делаем вывод, что это должно работать быстрее. Увы, это заблуждение. Что бы понять почему давайте разберёмся с тем, как процессор Zend Engine обрабатывает значения.
Читать дальше →

Список полезных инструментов для php разработчика

Время на прочтение10 мин
Количество просмотров150K
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Читать дальше →

Принцип подстановки Барбары Лисков

Время на прочтение6 мин
Количество просмотров153K
Привет, хабрачеловеки!

Захотелось вот поделиться сокровенным знанием по этой теме. К тому же материалов по этому, достаточно важному принципу проектирования классов и их наследования, в Рунете как-то негусто. Имеются формулировки вида:

«Пусть q(x) является свойством верным относительно объектов x некоторого типа T. Тогда q(y) также должно быть верным для объектов y типа S, где S является подтипом типа T.» © Wikipedia

Но они выносят мой мозг меня совершенно не радуют.

Если хочется услышать объяснение этой хрени умной фразы — прошу под кат.
Читать дальше →

Уроки разработки 64-битных приложений на языке Си/Си++

Время на прочтение2 мин
Количество просмотров7.1K
Мы регулярно пишем статьи посвященные разработке и тестированию 64-битных программ на языке Си/Си++. Каждая из статей представляет взгляд на задачу разработки 64-битных программ с разных точек зрения. Но существенная часть информации в них повторяется, так как необходимо знакомить читателя с проблематикой и вводить различные определения. Это, к сожалению, делает чтение подборки статей скучным занятием и соответственно не позволяет всесторонне изучить вопросы разработки 64-битных приложений.

Мы решили объединить все наши знания в единый труд, в котором будут рассмотрены сразу все вопросы, касающиеся 64-битного программирования. Для оформления в виде статьи материала оказалась слишком много и мы решили представить его в виде курса уроков.

Кратко опишу курс "Уроки разработки 64-битных приложений на языке Си/Си++" и приведу его содержание.
Читать дальше →

Что такое стартап? Основы от Стива Бланка

Время на прочтение3 мин
Количество просмотров4.4K
Успех состоит из пути от одной ошибки к другой без потери энтузиазма.
Уинстон Черчиль


Каждый знает, что такое стартап. Разве нет?
Я бы предложим новое объяснение тому, почему появляются стартапы: стартап – это организация, созданная для поиска повторяемой (в англ.оригинале «repeatable» – в значении «не одноразовая модель», а НЕ «бизнес-модель, которую можно повторить») и масштабируемой бизнес-модели.

Бизнес-модель


Хорошо, а что такое бизнес-модель?
Бизнес-модель описывает, каким образом ваша компания создает, достигает и завоевывает ресурсы.
Простым языком, бизнес-модель описывает, как ваша компания зарабатывает деньги (в вашей системе координат это могут быть успех, новые пользователи, прирост трафика и т.п.)
Представьте, что бизнес-модель – это диаграмма, на которой показаны все связи между различными частями вашей организации. Эта диаграмма показывает и то, как ваша продукция попадает к покупателям и как оплата за эти продукты попадает к вам. Также она демонстрирует структуру затрат, как каждый отдел компании взаимодействует с другими, как ваша компания интегрирована в рынок и взаимодействует с партнерами. Слова словами – проще отобразить на схеме.

Схема бизнес-модели


Много людей пытались понять, как лучше отобразить диаграмму или схему бизнес-модели. Мои студенты занимались этим годами, но работа Александра Остерволдера (Alexander Osterwalder) это лучшее, что я увидел за последние десять лет. Его диаграмма – это универсальный образец бизнес-модели. Ваша собственная бизнес-модель будет иметь свойственные только ей нюансы.
Читать дальше →

Информация

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