Pull to refresh
18
0
Василий @PyroRed

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

Send message

10 приемов, разрушающих хрупкую красоту кода

Reading time19 min
Views102K
Статья приводится в сокращении из-за ограничения на объем материала.

Для меня программирование — это не только технология, но и, во многом — искусство. И, поэтому, большое значение имеет красота кода.

Последние несколько лет я собирал приемы программирования, разрушающие в программном коде его утонченную красоту:
  1. Объявление всех переменных в начале программы;
  2. Возврат результата функции через ее параметр;
  3. Отсутствие локальных функций;
  4. Отсутствие else if;
  5. Использование параллельных массивов;
  6. Хранение размера массива в отдельной переменной;
  7. Доступ к свойствам объекта через obj.getProperty() и obj.setProperty(value);
  8. Использование рекурсии для вычисления факториалов и Чисел Фибоначчи;
  9. Отсутствие именованных параметров функции;
  10. Невозможность объявления объектов «на лету».
Наверняка, в некоторых местах вы будете со мной несогласны — ведь чувство красоты у всех разное.


Объявление всех переменных в начале программы


В двух словах:

Переменные должны объявляться в начале логического блока, в котором они используются, а НЕ в начале функции или программы.


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

Огнелис — твики и фишки

Reading time3 min
Views8.2K
Многие мои друзья пользуются Firefox и задают мне вопрос — а почему я пользуюсь Flock? Я им отвечаю — мне нравится, когда у меня в браузере без всяких телодвижений есть доступ до всего, что нужно. Тем не менее, «это все» поедает достаточный объем ОЗУ, не всегда юзабельно и требует «доводки». Как раз про доводку и пойдет речь ниже. Сразу же скажу, про pipeline писать не буду. Остальных опций хватает из about:config.

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

Интеграция вкусностей jQuery в другие сайты

Reading time4 min
Views2.5K
Есть у меня небольшой проект с user-generated content-ом. Встала задача сделать код кнопки с ссылкой на страничку пользователя, для интеграции в пользовательские блоги и сайты. Но делать скучные кнопки, как у большинства конкурентов, не хотелось. Хотелось, на равне с простыми кнопками и ссылками, сделать что-то особенное, jQuery-евское, с аяксом и анимацией :).

Суть простая: пользователь размещает у себя на сайте скрипт, который динамически вставляет кнопку. При нажатии на кнопку всплывает окошко с подгружённой пользовательской страничкой с нашего ресурса.

Проблемы очевидны:
  1. Необходимо определить, используется ли jQuery и нужный плагин на сайте пользователя. Если нет, то обоих динамически подгрузить. Делать отдельно коды для тех кто использует jQuery на своем сайте и для тех кто нет — не комильфо, а тем более подгружать при любом раскладе (могут возникнуть глюки, особенно у плагинов).
  2. Пережатый jQuery весит около 60 кБ, и в случае подкачки может не успеть полностью загрузиться и инициализироваться до исполнения кода.

В качестве вкусности я использовал плагин fancybox. Он позволяет не только отображать фотографии с lightbox-эффектом, но и любой другой контент в iframe.

Ниже представлен код.
Читать дальше →

7 творческих принципов Pixar от John Lasseter

Reading time4 min
Views2.6K
Данный текст подготовил и перевел Евгений aka jeje. Если текст вам понравился, то благодарите Евгения, сам он опубликовать перевод не может из-за ограничений кармы.

1.Никогда не начинайте с одной идеей


Если вы хотите написать книгу, сделать дизайн мебели или мультфильма — Никогда не начинайте с одной идеей, их должно быть три.
«Причина проста. Если продюсер приходит ко мне с предложением о новом проекте, он вынашивает эту конкретную идею долгое время. Это ограничивает его. Мой ответ всегда: «Приходи ко мне, когда будешь иметь три идеи, и это не значит, что одна хорошая, а две остальных плохих. Я хочу три действительно прекрасных идеи, из которых ты не можешь решить, какая же лучше. Будь готов обосновать все три задумки. Затем мы решим, какую идею ты будешь развивать далее.»

«Проблема у творческих людей всегда одна – они чаще всего фокусируют все свое внимание на одной идее. И выходит так, что они ограничивают свой выбор с самого начала проекта. Каждый творческий человек должен это попробовать. Вы будете удивлены, как это требование внезапно заставит вас думать о других вещах, которые вы даже не рассматривали до того. Из-за этой отстраненности вы вдруг найдете новые перспективы. И поверьте мне, существует всегда, как минимум, три хороших идеи»
Читаем далее

SMTP relay или что делать если ваш сервер попал в email-блеклист

Reading time2 min
Views62K


Если вдруг невинные письма с вашего сайта начали повально попадать в spam-боксы почтовиков, это может означать, что IP вашего сервера попал в email-блеклист. Вероятность этого возрастает, если у вас не свой собственный сервер. Примерный сценарий попадения в блеклист таков:
  • Юрий Иванович, директор небольшой студии танцев, имеет сайт «по соседству» с вами (читай, на том же сервере). В один прекрасный момент, Юрий Иванович узнает о чудесных перспективах email-маркетинга и рассылает пачку из двадцати тысяч писем с однотипной рекламой своей студии.
  • Или же, Вася Попов, не пользующийся антивирусом, но любящий старые версии Total Comander, апдейтит свою домашнюю страничку по FTP. В один прекрасный момент, спящий ранее троян, похищает пароли к Васиному FTP (которые лежат незащищенные в папке Total Comander). На следующий день, Васина домашня страничка уже отсылает десятитысячное предложение о покупке виагры.
  • Или же, Петя Твердохлебов, который имеет рядом сайт на Друпале версии 5.0 и думает что обновления это «от лукавого», в очередной солнечный день ловит XSS уязвимость и начинает, сам не зная того, отсылать рекламу потенциальным покупателям penis-enlargment pills.


Что делать и как быть?

Личный тайм-менеджмент

Reading time9 min
Views93K
Почитав недавний топик про лягушек я понял, что Хабрасообщество не очень хорошо ориентируется в вопросах тайм-менеджмента и многие никогда не занимались построением своей тайм-системы.

Поэтому я попробую исправить этот недочёт.

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

Welcome!

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

текст под произвольным углом без флеш и js

Reading time3 min
Views30K
Ранее здесь была представлена статья о том как сделать вертикальный текст картинками, генерируемыми php.

Теперь я хочу вам рассказать о том как сделать поставленную задачу без картинок, флеш и js, только средствами html и css. К тому же стало возможно сделать текст под произвольным углом. В конце статьи есть готовый пример.

вертикальный текст и текст под углом
Читать дальше →

Cloud-антивирус Panda с поддержкой «коллективного разума»

Reading time1 min
Views1.6K
Почти три года потребовалось программистам антивирусной компании Panda Security, чтобы сделать уникальный в своём роде продукт — антивирус на распределённой платформе Panda Cloud Antivirus (пока в бета-версии). Клиентская часть выпущена только под Windows.



Уникальность состоит в том, что Panda использует здесь собственную cloud-технологию, которую называет «коллективным разумом» (Collective Intelligence). По объяснению разработчиков, это позволяет им реагировать на появление новых вирусов «практически в реальном режиме времени». Эвристический движок собирает все подозрительные образцы и мгновенно отправляет их в «центр» на анализ. Ежедневно «коллективный разум» собирает с клиентских машин около 50 000 образцов. Благодаря такой системе идентификация новой, ранее неизвестной, заразы происходит в течение 6 минут (опять же, по заявлениям разработчиков). Функцию «коллективного разума» можно и отключить в настройках.

Клиентская часть программы «весит» 18 МБ и в процессе работы потребляет 17 МБ RAM. По мнению разработчиков, это меньше среднего показателя для обычных антивирусов, но они стремятся уменьшить его до 12 МБ. Впрочем, судя по первым результатам тестирования, ресурсоёмкость составляет до 40 МБ, хотя при этом антивирус на глаз не тормозит систему. Программа имеет минималистский дизайн.

via The Download Blog

Системы рекоммендаций: введение в гибридные системы

Reading time6 min
Views2.9K
Системы рекомендаций:
Советы от машины
Холодное начало
— Введение в гибридные системы
искусственные имунные системы и эффект идиотипов


Продолжим с того момента, на котором мы остановились в прошлый раз: мы рассмотрели несколько способов решения проблемы холодного начала, теперь я предлагаю рассмотреть другие проблемы систем рекомендаций (далее просто СР) и подумать, как разные типы СР могут дополнять друг-друга. Сразу оговорюсь, что я не буду подробно рассматривать способы решения той или иной проблемы. Цель этой статьи — лишь помочь разработчикам ориентироваться в разновидностях СР и в связанных с ними проблемах.

Для начала все-таки придется дополнить классификацию СР. Przemyslaw Kazienko и Pawel Kolodziejski предложили разделить все СР на пять типов: статистические, коллективные, ассоциативные и информационные. Начнем с самых простых.
Читать дальше →

Как вовремя узнать, что ваш сервер не работает?

Reading time3 min
Views21K
Случается, что сайты перестают работать. Причины могут быть самые разные: в датацентре «упал» канал, сервер вырубился, кто-то что-то намудрил с базой или файлами на сервере, сисадмин неудачно обновил ПО или переносил аккаунты. Или кое-кто забыл оплатить хостинг.

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

Реализация отправки sms-уведомлений

Reading time3 min
Views16K
В виду достаточно большого парка серверов/свитчей/модемов и иного активного оборудования в конторе, была установленная система мониторинга zabbix и успешно использовалась продолжительное время. Zabbix имеет замечательную возможность отправки уведомлений о возникших проблемах.
Для этого был написан скрипт отправки sms сообщений через шлюз email-to-sms оператора связи, ограничение по количеству смс с одного адреса в сутки было обойдено путем ротации исходящих адресов, работало более или мение сносно, но в последнее время смс сообщения через данный шлюз начали доходить с задержкой порядка 10-15 минут, что уже не очень нравилось.
Итак, было решено организовать отправку уведомлений через собственный GSM-терминал, порывшись в прайсах поставщиков и не обнаружив там подходящих по цене и характеристикам GSM модемов весьма огорчился.
И тут вспомнилось что дома валяется старый Siemens CX65 да еще и data-кабель к нему, после подключения телефона и курения доков по отправке sms сообщений пришел к не очень радостному выводу, оказывается siemens не поддерживает отправку sms в текстовом режиме, команда AT+CMGF=1 возвращает error.
Отправка сообщений в данных аппаратах возможна только в режиме PDU, ради спортивного интереса и для размятия мозгов было решено реализовать эту систему, был написан скрипт для перекодировки в PDU формат сообщений и отправки через телефон.
Читать дальше →

Инфраструктура современного офиса — 3

Reading time6 min
Views10K
Что-то я затянул с очередной серией, но тому были причины: от кучи неотложных дел на работе, до раненого автомобиля :(
Ладно, в этот раз — организация внешних вводов, вопросы построения телефонии и некоторые аспекты построения Wi-fi. Как и в предыдущих сериях, я не претендую на глубину раскрытия техники, стремясь лишь показать основные варианты развития элементов инфраструктуры. Предыдущие серии про инфраструктуру здесь и здесь (а здесь — бонус трек про оборудование Allied Telesis).

Провайдерские вводы


Существует целый спектр возможных решений, каждое из которых следует принимать руководствуясь масштабом организации, бюджетом и внешними факторами. Рассмотрим основные по пунктам:
  1. Вы — небольшая компания (до десяти человек), заезжаете в подвал жилого дома или, пуще того, в квартиру на первом этаже жилого здания.
    В такой ситуации с выбором провайдера привередничать не приходится и надо рассчитывать на наличие в здании местного провайдера (если их несколько — вам сильно повезло, конкуренция повышает уровень сервиса). Можно пытаться экономить, оформляя интернет на физическое лицо, однако, в таком случае, стоит быть готовым к тому, что в прайм-тайм местечковый провайдер решит, например, «поменять сетевое оборудование», что приведет к неприятному простою в работе. Целесообразно в такой ситуации предусмотреть резерв хотя бы в виде мобильного интернета (Skylink, Yota, Edge/GPRS) — критически важное письмо в таком случае, пусть медленно, но доползёт. Телефония в такой ситуации, как правило, исполняется в виде «медно-волоконного канала» городского провайдера.
  2. Вы все еще небольшая компания, но сидите в гараже (бытовке, ларьке, домике на дереве, здании на территории промзоны).
    Все безрадостно — ваш единственный выход — радиоканал до ближайшей точки присутствия скоростного интернета, либо, если шансов добить по радио нету — интернет через сотовый телефон. Если шансы все же есть, запасайтесь дальнобойными направленными антеннами и шагайте в ближайшее место, где может быть интернет. В моей практике был случай, когда автосервис около года работал через стрим, который находился в двух километрах от. Проблемы в таком случае те же, что и в предыдущем (нестабильность местного кабельного провайдера), правда, в случае использования длинного Wi-Fi линка вы еще и от погоды зависеть будете. В сильный дождь или снегопад перебои — не редкость..
  3. Вы заезжаете в бизнес-центр.
    Все уже лучше, но не без специфики: как правило владельцы бизнес центров уже договорились с одним-двумя большими провайдерами, что ограничивает ваш выбор (притащить своего провайдера удастся только если вы — очень большая компания с серьезной арендной ставкой). Плюс ситуации в том, что канал организуют быстро, и, скорее всего без проблем. Явный минус — один — монополисты в здании тарифы могут воротить очень грустные.
  4. (моя ситуация) Вы заезжаете в отдельно стоящее здание.
    Геморрой страшный, но при должном подходе получится очень красиво :) Подробно об этом сценарии — чуть ниже.

Итак, отдельно стоящее здание. Учитывая, что вы — хозяин положения, при организации провайдерских вводов стоит учитывать следующее:
  • Отказоустойчивость (любой более-менее серьезный маршрутизатор умеет выбирать живой канал). По возможности закладывайте два независимых канала от независимых провайдеров;
  • Дороговизна (более серьезный провайдер будет просить более серьезных денег). При этом более дешевый провайдер будет, скорее всего, грешить всеми детскими болезнями домовых сетей — падения канала в течение дня, « плановые профилактические работы» в прайм-тайм и прочие прелести
  • Время подключения. Если в предыдущих сценариях вас скорее всего подключили бы в течение дня-двух, то построение индивидуального канала может стать вопросом нескольких месяцев (тут и согласования с городскими кабельными службами, и неповоротливость больших провайдеров, и проблемы со строителями..)

И все? А где же телефония и WiFi? В конце-концов и про вводы можно поподробнее..

Базовый css-шаблон

Reading time1 min
Views4.1K
Вечером знакомый попросил быстро сделать ему основу для его блога. Даже не сверстать макет, а сделать именно основу.

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

Popup с затухающим фоном с помощью jQuery

Reading time8 min
Views43K
imageМногие из нас сталкивались с всплывающими окнами, когда при этом постепенно потухает фон. Взгляд пользователя невольно фокусируется только на той части экрана, где что-то требуется от этого самого пользователя. Достаточно полезно, не правда ли?

Конечно же, не претендую на какую-то новизну, и данная заметка будет больше полезна начинающим с jQuery (коим и сам являюсь), чем людям, имеющим существенный опыт с данным javascript фреймворком.

под катом пример и описание

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

Reading time9 min
Views515K
jQuery Logo

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

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

Полезные инструменты для web-разработчиков

Reading time2 min
Views2.4K
Хотелось бы просто поделиться ссылкой на простейшие инструменты, которые могут помочь web-разработчикам, облегчив их рутинные процедуры.

MailLink


Почти год назад была необходимость защитить большое количество адресов электронной почты от роботов по сборке мейлов, для последующей рассылки по ним спама. По этому поводу быстро набросал страничку, которая позволяет кодировать адреса посредством JavaScript. За основу был взят алгоритм из плагина шаблонизатора Smarty (для особо пытливых могу выложить реализацию на РНР отдельно).

Конечно у него есть и свои минусы:
  1. адрес будет показываться только при всключенном JavaScript
  2. если у робота есть поддержка JS, то он может распознать скрываемый e-mail
Насчет первого, то скорее всего выключенный JS — это паранойя во времена веб два нуль и выше. Насчет второго, то как показала практика — писателям таких пауков очень лень пытаться распознать закодированные адреса, когда на просторах сети полным полно не закодированных. Так что данных алгоритм работает в большинстве, чем 99.5% случаев.

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

Прописываем dpi в PNG с помощью PHP

Reading time2 min
Views5.3K
Понадобилось мне тут вдруг для одной прикладной задачи генерировать PNG-шки на PHP, чтобы затем их можно было вставлять в документы и распечатывать. Но вот проблема, никак с помощью GD в PHP при сохранении нельзя задать разрешение в dpi, а ведь это очень важно при печати. С ImageMagick мне связываться не хотелось, поэтому я быстренько нагуглил PNG (Portable Network Graphics) Specification и написал вот такой код:
Читать дальше →

Yii — что за зверь?

Reading time1 min
Views4K

Что это?


Yii (акроним фразы yes, it is) — высокопроизводительный компонентно-ориентированный PHP фреймворк наилучшим образом подходящий для масштабируемых веб-приложений. Yii появился с широким набором возможностей, включая MVC, DAO/ActiveRecord, I18N/L10N, поддержку AJAX на основе jQuery, управление доступом на основе ролей, генерация рутинного кода (scaffolding), проверку ввода, виджеты, события, темы оформления, веб-сервисы и еще много чего. Написанный на чистом ООП, Yii является простым в использовании, а также чрезвычайно гибким и расширяемым.
чуть больше

Введение в объектно-ориентированные базы данных

Reading time9 min
Views59K
ООСУБДОбъектно-ориентированные базы данных – базы данных, в которых информация представлена в виде объектов, как в объектно-ориентированных языках программирования.

Применять или не применять объектно-ориентированные системы управления базами данных (ООСУБД) в реальных проектах сегодня? В каких случаях их применять, а в каких нет?

Вот преимущества использования ООСУБД:
  • Отсутствует проблема несоответствия модели данных в приложении и БД (impedance mismatch). Все данные сохраняются в БД в том же виде, что и в модели приложения.
  • Не требуется отдельно поддерживать модель данных на стороне СУБД.
  • Все объекты на уровне источника данных строго типизированы. Больше никаких строковых имен колонок! Рефакторинг объектно-ориентированной базы данных и работающего с ней кода теперь автоматизированный, а не однообразный и скучный процесс.
Интересно? Тогда стоит попробовать!

В статье описано все, что требуется для начала работы с ООСУБД db4o.

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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity