Pull to refresh
6
0

User

Send message

Неприступный почтовый сервер, или жизнь без спама

Reading time11 min
Views201K
Борьба со спамом — это головная боль всех ответственных администраторов почты. Чего только они не изобретают, чтобы любимым пользователям лучше жилось. Однако, как показала практика общения со многими системными администраторами, почему-то далеко не все представляют как правильно фильтровать спам.

Чаще всего встречается подход «добавим кучу RBL (DNSBL) и будем радоваться жизни». Подход не верный чуть более, чем полностью. Второй по популярности — контент-фильтры, зачастую купленные за бешеные деньги. Такой подход тоже в большинстве случаев совершенно неоправдан.

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

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

Итак, если вы хотите обезопасить своих пользователей от спама или наоборот, хотите чтобы кто-то случайно не обезопасил пользователей от ваших писем — добро пожаловать под кат.

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

Большой брат помогает тебе

Reading time7 min
Views19K
В очередной раз убедился, что программисты пишут программы совершенно безалаберно. И работают они не благодаря их заслугам, а благодаря удачному стечению обстоятельств и заботе разработчиков компиляторов в Microsoft или Intel. Да, да, именно они заботятся и в нужный момент подставляют костылики нашим кривобоким программкам.

Читайте далее байтораздирающую историю про класс CString и дочь его, функцию Format.

Искусство программирования под Unix (и не только). Часть вторая, Ясность лучше заумности

Reading time3 min
Views3.6K
Продолжаю цикл статей, связанных с правилами Эрика Реймонда из «Искусства программирования под Unix».

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

Сегодня речь пойдет о следующем правиле —

Правило ясности: Ясность лучше заумности (или ясность лучше, чем мастерство)
Rule of Clarity: Clarity is better than cleverness.

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

CouchDB сегодня

Reading time8 min
Views28K


Что такое CouchDB для вас? Вероятно любой, кто хоть немного интересуется популярной нынче темой NoSQL, прекрасно знает общие детали: это такая симпатичная игрушка с map/reduce-запросами, которые пишутся на JavaScript, с которой можно работать, гоняя JSON по HTTP-протоколу, а также не исключено, что слышали, что она fault-tolerant, тобишь не ломается вообще. Дальше этого обычно дело не идёт, в результате CouchDB отправляется в delicious в общую кучу со всякими MongoDB, Cassandra, Hadoop и т.п.

Примерно такого мнения придерживался и я вплоть до недавнего времени, пока не возникла острая необходимость переосмыслить архитектуру текущего проекта (упёршегося лбом в свою реляционную БД) и пересесть на документную базу данных, которая бы умела map/reduce. После того, как более пристально взгялнул на CouchDB, я понял, что он уникален в своём классе, его не следует ставить в один ряд с упомянутыми продуктами. Идеи, которые заложены в CouchDB настолько концептуальны, что способны в корне перевернуть представление о разработке веб-приложений.

О том, что же меня так впечатлило, постараюсь рассказать под катом.
Читать дальше →

Дружим XNA и WPF

Reading time3 min
Views9.2K
Вначале отвечу на вопрос «Зачем их дружить». Ответ прост — WPF хорош для пользовательских интерфейсов, XNA для сложной 3D графики и если вы делаете клиентское приложение со сложным интерфейсом и 3D элементами в нем, то связка XNA & WPF как раз для вас.
Статью я буду иллюстрировать на примере простенького медиаплеера, который я сейчас пишу.
Читать дальше →

HTML5 Audio и Game Development: баги браузеров, проблемы и их решения, идеи

Reading time6 min
Views11K
В топике я расскажу о нюансах использования тега <audio> в разных браузерах при разработке игр, о проблемах, с которыми я столкнулся и о том, как их решить. Объяснение будет идти паралельно с написанием обертки для удобной работы.
Читать дальше →

Иконки типов файлов

Reading time1 min
Views6.3K
По просьбе гражданина dio нарисованы 25 иконок типов файлов в размерах 64х64, 48х48, 32х32 и 16х16. Иконки распространяются на условиях лицензии CC BY-ND.
Этот сет является дополнением к первому и второму бесплатным наборам.
Скачать иконки можно здесь

image

GZip и nginx: влияние на производительность

Reading time2 min
Views36K
Добрый день. Недавно меня заинтересовал модуль ngx_http_gzip_static_module, и я решил погонять мой домашний сервер немного с разными настройками сжатия nginx, чтобы убедится, действительно ли современные процессоры настолько быстрые, что можно ставить сжатие в 9-тку и не париться. В качестве подопытного файла выступала слитая главная страница lenta.ru – 170кб. Во время тестирования обнаружилась интересная особенность, которая изменила мои взгляды на выбор количества процессов nginx.
Читать дальше →

Underscore.js — библиотека, которая так хороша, что должна быть вне закона

Reading time3 min
Views50K
Каждый, кому приходилось писать объемные куски осмысленного кода на javascript, рано или поздно понимал, что ему многого не хватает в этом языке или просто неудобны некоторые врожденные конструкции. Для сглаживания шероховатостей применяются jQuery, Prototype, MooTools etc. Кто-то уже мало представляет себе, как можно кодить без них. Сегодня я расскажу о еще одной маааленькой библиотечке, которая делает мир javascript-программиста еще прекраснее. Речь пойдет о Underscore.js
Go ahead, make my day

pv — маленькая, но очень полезная утилита

Reading time2 min
Views86K
Один мой друг сказал по поводу pv следующее «Я админю семь лет, мне нужна была эта тулза десятки раз, а я даже не знал что она существует». В размышлениях над тем как заполучить инвайт на Харбе, я набрал в поиске pv. И ничего не нашел.
Читать дальше →

Размышления об интерфейсах

Reading time3 min
Views12K
image
Хочу поделиться некоторыми размышлениями по поводу интерфейсов, местами переходящие в советы и замечания. Отмечу, что сплошь и рядом мы встречаемся с различными онлайн сервисами, поэтому, когда я говорю интерфейс – я имею в виду не только классические окошки десктоп-приложений, но и интерфейсы встречающиеся в вебе). Надеюсь, эти сведения окажутся для кого-то полезными, а для более опытных, просто удобной формулировкой того, что они и так знают (что, кстати, как показывает практика, бывает тоже очень полезно).

Сразу хочется отметить, что дизайн интерфейсов имеет очень мало общего с графическим дизайном и, тем более, изобразительным искусством. И одних знаний про теории цвета, формы и объекта тут недостаточно.
Читать дальше →

Открытие web-standards.ru

Reading time2 min
Views752
Веб-стандарты
Сегодня у нас хорошие новости: как и обещали, мы открываем наш флагманский сайт Веб-стандарты. Это ресурс со статьями, новостями и анонсами событий Web Standards Days, созданный разработчиками для разработчиков.
Читать дальше →

Blender GameKit 2 — первая глава на русском языке

Reading time1 min
Views5.3K
image

Первая глава из книги «Blender GameKit2» описывающая процесс создания игры в Blender теперь и на русском языке.

b3d.mezon.ru/index.php/Blender_GameKit_2/Pumpkin_Run_-_playing_with_3D_games_technology

Эта статья будет полезна всем начинающим игростроителям и интересующимся данной темой.

Fugue Icons 2.9.3a

Reading time1 min
Views2.4K
image

Совсем недавно существенно обновился набор замечательных иконок Fugue Icons от Yusuke Kamiyamane. Теперь их 2,926 (16х16) + 210 (24х24) + 46 (32х32) = 3182 качественные иконки для вашего сайта. В архиве также имеется версия без теней.

Лицензия Creative Commons Attribution 3.0 позволяет использовать иконки в любых целях со ссылкой на автора.

Превью 3Mb
Архив 4.9Mb
Архив+исходники 24.8Mb

Генератор миниатюрок из Nginx-а

Reading time3 min
Views27K
Итак, сегодня мы соберём генератор миниатюрок на базе любимого народом веб-сервера — nginx-а. Что примечательно, сделаем мы это без единого гвоздя, т.е. без единой строчки кода, не считая конфигурации.
Что ж приступим...

Common Language Infrastructure (CLI) для веба

Reading time4 min
Views2.2K
Внимание, перевод одного интересного поста из блога Мигеля!

Последние дни Joe Hewitt в твиттере сильно переживал за состояние клиентских веб технологий. TechCrunch вели репортаж о состоянии прогресса в их обзоре The State Of Web Development Ripped Apart In 25 Tweets By One Man (Состояние Веб Разработки в 25 твитах одного человека).

Сегодня Joe предложил блестящую идею:

Если встроить ECMA CLI в браузеры вместо ECMAScript, веб стал бы намного гибче.
Читать дальше →

Визуальный редактор на jQuery

Reading time2 min
Views14K
Визуальный редактор

В мире визуальных редакторов есть CKeditor, есть tinyMCE — монстрообразные, не гибкие, их сложно изменять под задачи сайтов и интерфейсов. Есть небольшие, простые, они часто с ужасным дизайном, не развиваются, не поддерживаются. Как настоящий разработчик, несколько лет назад я решил написать свой редактор и в течение этого времени постоянно развивал его и упрощал. Суть редактора постепенно свелась к простым требованиям:
  • он должен быть красивым и одновременно ненавязчивым, чтобы вписывался без внешних изменений почти в любой интерфейс;
  • обязательно быстрым и легкий, потому что никому не нравится сидеть даже полминуты в ожидании загрузки всех кнопок и плагинов;
  • гибкий для разработки, доработки и встраивания под все возможные нужды;
  • с простым и понятным интерфейсом. В идеале визуальный редактор — это просто поле для ввода текстов, без лишних кнопок и функций. Просто люди пишут тексты в вебе и это все что им нужно.

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

Операторы '&&' и 'and' в Ruby

Reading time1 min
Views24K
На одном собеседовании меня спросили: «когда ты пишешь на Ruby, ты пользуешься оператором 'and' или двумя символами амперсанда '&&' для обозначения логического 'И' ?». На самом деле, я по старой привычке всегда ставил два символа амперсанда '&&' и никогда не задумывался об этом. Так и ответил, мне сказали «Хорошо».

А вы не смотря под cut можете внятно объяснить разницу между 'and' и '&&' в Ruby?
Проверим?

Многопоточность в Ruby

Reading time9 min
Views38K
Перевод главы «Multithreading» книги David Thomas и Andrew Hunt «Programming Ruby: The Pragmatic Programmers' Guide, Second Edition».

Часто самым простым способом выполнить одновременно две вещи является использование потоков в Ruby. Они являются внутрипроцессными, встроенными в интерпретатор Ruby. Это делает потоки Ruby полностью переносимыми, т.е. независимыми от операционной системы. Но в то же время вы точно не получите выгоду от использования родных, нативных потоков. Что это значит?

Вы можете столкнуться с голоданием (thread starvation — это когда поток с маленьким приоритетом не имеет шанса запуститься). Если вы хотите заблокировать ваши потоки, то со скрежетом остановится целый процесс. А если возникнет ситуация, что некоторые потоки будут посылать вызовы операционной системе, для выполнения которых требуется немалое время, то все потоки будут висеть, пока интерпретатор не получит контроль обратно. И наконец, если ваша машина имеет больше одного процессора, потоки Ruby не будут это использовать, т.к. они запускаются в одном процессе, а в одиночном родном потоке они будут вынуждены запускаться на одном процессоре единовременно.

Все это звучит страшновато. Тем не менее, на практике во многих случаях выгода от использования потоков во многом перевешивает любые потенциальные проблемы, которые могут возникнуть. Потоки Ruby являются эффективным и легким путем достижения параллельности в вашем коде. Вы просто должны понять основные проблемы реализации, и, соответственно, архитектуру.
Читать дальше →

Information

Rating
Does not participate
Location
Латвия
Date of birth
Registered
Activity