Как стать автором
Обновить
0
0
chipollone @chipollone

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

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

Легковесные веб-приложения на Ruby

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

Быстрая разработка


Вдохновленный постами на западных блогах вроде «Clone TinyURL with 40 lines of Ruby» или «Clone Pastie in 15 Minutes with Sinatra & DataMapper» я решил попробовать пройти и заодно описать весь процесс реализации легковесного веб-приложения на руби, от проектирования до деплоймента.

Читать дальше
Всего голосов 49: ↑47 и ↓2+45
Комментарии24

Автоматическая загрузка файлов на Яндекс.Диск

Время на прочтение4 мин
Количество просмотров26K
Предлагаю вашему вниманию PHP скрипт автоматической загрузки файлов на сервис Яндекс.Диск. Скрипт прост до безобразия, достаточно передать ему в качестве параметров логин, пароль и путь к файлу и в результате он загрузит ваш файл на сервис и выдаст вам ссылку на него. Не знаю, сколько еще меня вместе с моими постами будет терпеть Яндекс, но все-таки приведу исходный код скрипта :)
Читать дальше →
Всего голосов 100: ↑94 и ↓6+88
Комментарии125

Как правильно говорить с «трудным» клиентом

Время на прочтение3 мин
Количество просмотров63K
Многим из нас время от времени попадаются «привередливые», «неадекватные» и «трудные» заказчики, партнёры, начальники, подчинённые и т.д. В этом посте я расскажу:
  • Как добиться своего в конфликтных ситуациях
  • Как вести разговор, не вызывая негативной реакции собеседника
  • Как держать конфликтную ситуацию под контролем
  • Как не допустить развития конфликта и как его устранить
Читать дальше →
Всего голосов 96: ↑87 и ↓9+78
Комментарии81

Java по-русски. Часть первая: Книги

Время на прочтение2 мин
Количество просмотров496K
Не так давно я проводил опрос «Какие материалы о Java вас интересуют на русском языке?» среди посетителей Хабра. Вторым этапом моего исследования будет обзор существующих русско-язычных ресурсов.

Книги


За 2009 на Ozon.ru можно найти 8 книг по Java (всего за последние 3 года их вышло 22 — примерно по 7 в год, на books.ru набор примерно такой же, так что наша выборка довольно репрезентативна). Посмотрим, что это за книги?
Читать дальше →
Всего голосов 42: ↑31 и ↓11+20
Комментарии59

Простота в дизайне. Эпизод 1. Червь Уорхола

Время на прочтение2 мин
Количество просмотров1.8K
as simple as possible, but not simpler

В 2001, после эпидемии CodeRed, Николас Вивер написал крайне интересную статью про быстрораспространяющихся червей «Warhol Worms: The Potential for Very Fast Internet Plagues», у которой была потом ещё пара сиквелов. Краткое содержание статьи: если к механизму распространения червя добавить ряд оптимизаций, то червь может поразить всю уязвимую популяцию за 15 минут и даже быстрей. Грубо говоря, сломать интернет быстрей, чем админ допьёт кофе. Оптимизации были интересные:
  1. hitlist scanning (заранее создать список первых 1000-10.000 жертв, чтобы избежать начальной пологой стадии экспоненциального роста)
  2. permutation scan (обнаружив уже заражённую машину, перескочить в списке адресов, поскольку следующие за заражённым адреса уже наверняка просканированы)
  3. partitioned scan (родительский червь раздаёт потомкам диапазоны адресов, чтобы совершенно исключить повторное сканирование)
  4. subnet scan — очевидное сканирование локальной подсети в первую очередь

Меня тогда очень поразили такие возможности червестроения. Я тогда накатал статью «Modular Worms», что черви будущего будут со сменными насадками, апдейтиться прямо в сети и т.д. Мою статью, как обычно, отклонили, а лет через пять, как обычно, именно такие черви стали использоваться для строительства ботнетов. Сначала был Agobot, а потом дело встало на поток. Даже появился термин «open-source worm».

Реальный же червь Уорхола появился 25 февраля 2003 года. Он назывался SQL Slammer, заражал MS SQL Server. И этот червь не использовал ни единой хитрой оптимизации. Он тупо распространялся по UDP, умещаясь внутри одной-единственной датаграммы. Это было проще, это было дешевле. Ведь все мы знаем, что TCP нужно отправить три пакета только чтобы начать общение. При этом необходимо держать структуры данных в ядре, ждать ответа, ставить таймеры и т.д. и т.п. Напротив, UDP червь мог тупо забивать аплинк датаграммами, сколько уж влезет. А влазит много: 1Mbits это 332 «споры» в секунду, каждая спора 376 байт. Глобальное распространение червя произошло за 10 минут. Может и быстрее, подумал я, ведь моя статистика собиралась с шагом 10 минут. И в одном файле червя не было, а в следующем он уже был. Я проверил таймстампы — да, примерно 10 минут. Зарубежные коллеги тоже сказали 10 минут. Этот рекорд до сих пор не побит.

Таким образом, самый выдающийся результат в области червестроения был достигнут через простоту и дешевизну, а не через хитровывернутые механизмы и оптимизации.
Всего голосов 98: ↑95 и ↓3+92
Комментарии22

Веб-аналитика: анализируй это! Часть 2. Сбор данных

Время на прочтение5 мин
Количество просмотров18K
Перед тем, как анализировать данные статистики, нужно понимать, как они были собраны, какие из них могут быть неточными, и почему.

Сервер в интернете получает от браузера пользователя запросы и отдает данные. На каждый просмотр страницы сервер получает один запрос (на тело страницы), а затем несколько дополнительных (картинки, скрипты, таблицы стилей и другие дополнительные данные для отображения страницы). Скрипты на странице также могут генерировать запросы к серверу — в том числе, к отдельному серверу статистики.
Читать дальше →
Всего голосов 34: ↑28 и ↓6+22
Комментарии24

Основы безопасности PHP

Время на прочтение5 мин
Количество просмотров28K
Данный материал для начинающих программистов.

Содержание



Читать дальше →
Всего голосов 68: ↑55 и ↓13+42
Комментарии185

Чеклист запуска сайта

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

Этот чеклист будет полезен всем, кто запускает сайты или следит за этим увлекательным процессом. Ничего не пропустите!
Читать дальше →
Всего голосов 168: ↑140 и ↓28+112
Комментарии70

Архитектура CMS. Модель данных. Часть 1

Время на прочтение8 мин
Количество просмотров6.3K
Система управления содержимым (CMS) обязана предоставить гибкие всеохватывающие функциональные возможности для управления содержимым сайта, облегчить работу администратора-конфигуратора и способствовать созданию удобного в использовании сайта. Содержимым сайта можно назвать новости, размещенные на нём, а также статьи, комментарии, фотографии. Содержимым также являются целые структуры информации: новостные ленты, каталоги, форумы, блоги. Обобщенно: содержимое – это данные, размещенные на сайте.

CMS может просто передавать данные по запросу клиентскому приложению, например сетевой программе, flash-клипу или AJAX-приложению. Но чаще всего, CMS предоставляет клиенту уже подготовленные для отображения данные в HTML формате. В этом случаи, для обеспечения доступности, легкости восприятия и удобства пользования содержимым, выполняется стилизация и объединение его с элементами оформления (темы, шаблоны), навигации (меню, ссылки) и управления (формы и ссылки тоже), и всем этим тоже нужно управлять.

Идея


Окружающий мир воспринимается нами объектным, мы мыслим «объектами», в наших умах выстраивается объектная модель мира. Поэтому нам не составит труда создать объектную модель содержимого сайта и управлять ею. Новости, товар в каталоге, сообщения на форуме и сами форумы, и все другое можно представить в виде объектов. Устанавливая связи между объектами, можно создавать структуры данных любой сложности, от добавления комментариев к статьям до создания социальных сетей и более.

Объекты, классы и связи данных – это информация, которую нужно уметь создавать, хранить, использовать, изменять и удалять. В нашем распоряжении реляционная база данных для хранения информации. Действия же совершаемые с информацией – часть логики функционирования CMS, которая в большей части будет реализована модулем данных Data.
Читать дальше →
Всего голосов 53: ↑44 и ↓9+35
Комментарии102

BlogEngine.NET 1.5. Русифицированная сборка с темами и расширениями

Время на прочтение5 мин
Количество просмотров2.3K
Собрал для себя дистрибутив блогового движка BlogEngine.NET (версия 1.5.0.7), готовый к развертыванию на хостинге за секунды и русифицированный так, как мне нужно (начиная от slug'ов до множества доработок перевода в спецфайле и самом коде, включая расширения), с различными расширениями и с большим пакетом тем, но подумал, что, возможно, еще кому-нибудь он пригодится.
Далее: для тех, кто не знает, что такое BlogEngine.NET и с чем ее едят — возможно, будет интересен рассказ о нем, для тех, кто «в теме» — список сделанных в движке изменений.

Что такое BlogEngine.NET?


BlogEngine.NET — это легкий и достаточно функциональный open-source движок для блогов, написанный с использованием технологии ASP.NET. Он может работать как с базами данных (Microsoft SQL, Microsoft SQL Express, MySQL), так и с XML-файлами в качестве хранилища (по умолчанию). При обычных размерах блога разницы в производительности не наблюдается.
Пример BlogEngine «из коробки» со стандартной темой — блог разработчика движка.
Читать дальше →
Всего голосов 29: ↑22 и ↓7+15
Комментарии19

Извлечение данных или знаний?

Время на прочтение3 мин
Количество просмотров11K
Приветствую!

Стало любопытно, насколько представлена тема Data Mining на хабре. Увидел лишь одну статью, посвященную данной тематике. Хочу сделать свой небольшой вклад в развитие данной темы.

Исторически сложилось, что у термина Data Mining есть несколько вариантов перевода:
  • извлечение данных
  • извлечение знаний, интеллектуальный анализ данных

Если говорить о способах реализации, то первый вариант относиться к прикладной области, второй — к математике и науке, и, как правило, они мало пересекаются. Если говорить о возможности применения — тут вариантов очень много. Так получилось, что я работал как с первым вариантом (в университете — научная работа), так и с другим (работа, фриланс). Рассмотрим подробнее.

Извлечение данных


Извлечение данных — это процесс нахождения, сбора информации, а также сохранения (конвертация) их в разных форматах. По простому, программы для извлечения данных называют парсерами (parser), граберами (grabber), спайдерами (spider), кроулерами (crawler) и т.д. Фактически, такие программы существенно облегчают всем жизнь, так как позволяют систематизировать данные (именно данные, а не знания!). Такие программы могут собирать адреса компаний в вашей отрасли, ссылки из нужных форумов, парсить целые каталоги, также могут служить отличным средством для составления баз данных.

Читать дальше →
Всего голосов 59: ↑57 и ↓2+55
Комментарии30

Программируем жесты мышкой

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

Многие пользователи Opera и FireFox знают о существовании так называемых Mouse Gestures (для FF существует одноименный плагин) — жестов мышкой, на которые реагирует браузер выполняя различные действия (такие как открытия нового окна, закладки, назад, вперед и т.д. и т.п.), единственный недостаток данной фичи — нет взаимодеймствия с сайтом, и я решил написать небольшую бибилотечку, которая поможет разработчикам добавить подобный функционал на свой сайт…
Читать дальше →
Всего голосов 47: ↑42 и ↓5+37
Комментарии23

Принципы разработки ПО для iPhone с использованием акселерометра

Время на прочтение11 мин
Количество просмотров23K
В статье рассмотрено принципы работы iPhone акселерометра, показаны примеры приложений, использующие акселерометр в качестве главного компонента, наведены рекомендации по использованию акселерометра. Также показано, как использовать акселерометр в веб-приложениях. Часть материалов была взята из статьи «Скроллинг при помощи акселерометра».

Что такое акселерометр?


Обратимся к Википедии:
Акселерометр (от лат. accelero — ускоряю и μετρέω — измеряю) — прибор, измеряющий проекцию кажущегося ускорения. Кажущееся ускорение есть равнодействующая сил не гравитационной природы, действующая на массу и отнесённая к величине этой массы. Акселерометр может применяться как для измерения проекций абсолютного линейного ускорения, так и для косвенных измерений проекции гравитационного ускорения. Последнее свойство используется для создания инклинометров. Акселерометры входят в состав инерциальных навигационных систем, где полученные с их помощью измерения интегрируют, получая инерциальную скорость и координаты носителя. Электронные акселерометры часто встраиваются в мобильные устройства (в частности, в телефоны) и применяются в качестве шагомеров, датчиков для определения положения в пространстве, автоматического поворота дисплея и других целей. В игровых приставках акселерометры используются для управления без использования кнопок — путем поворотов в пространстве, встряхиваний и т. д.


Apple — не первая компания, которая внедрила акселерометр в мобильный телефон, но первая, у которой это получилось хорошо.
Читать дальше →
Всего голосов 85: ↑81 и ↓4+77
Комментарии26

Шпаргалки

Время на прочтение1 мин
Количество просмотров1.9K
Недавно я делал обзор электронной книги Orsio b731. Внимательные читатели узрели на фотографиях папку шпаргалок и попросили поделиться. Что ж, держите! ;)

image
Читать дальше →
Всего голосов 82: ↑62 и ↓20+42
Комментарии20

www.askdev.ru — русский аналог stackoverflow.com

Время на прочтение3 мин
Количество просмотров2.9K
image
Хочу представить проект, который, с одной стороны, является русским аналогом stackoverflow.com и альтернативой форумам — с другой. Но почему же аналог, а не клон? И чем он отличается от форумов?
Эти и другие вопросы мне задавали не один раз — на них я и попробую ответить.

Читать дальше →
Всего голосов 118: ↑89 и ↓29+60
Комментарии211

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

Время на прочтение19 мин
Количество просмотров102K
Статья приводится в сокращении из-за ограничения на объем материала.

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

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


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


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

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


Читать дальше →
Всего голосов 402: ↑324 и ↓78+246
Комментарии411

Автоматический контроль качества Java-кода

Время на прочтение7 мин
Количество просмотров25K
Код, который пишет программист, должен быть рабочим – самое первое правило успешной работы, с которым согласится и сам программист, и все его начальники. Но, кроме того, что код должен просто работать, часто к нему предъявляются повышенные требования – наличие комментариев (внутренней документации), читаемость, быстроту внесения изменений, совместимость с явными и неявными стандартами. Всё то, что можно назвать качеством кода.

Однако, в отличие от работоспособности кода, которую можно оценить с помощью выполнения проверочных тестов, качество кода не является простой оценкой TRUE или FALSE. Более того, под качеством кода понимается набор субъективных оценок восприятия кода другим человеком. Однако давайте всё-таки попробуем как-то формализовать задачу оценки качества, и, при возможности, дать способ автоматического выполнения этой задачи.
Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии8

Adjustable soft II

Время на прочтение3 мин
Количество просмотров611
В предыдущей статье я поднял некоторые проблемы, касающиеся использования проприетарного ПО. Позвольте вам предложить продолжение.

Как же нам получить идеальный софт, или по крайней мере найти направление, в котором двигаться? Влиять на проприетарное ПО весьма непросто, да и стимула никакого — даже если укажешь на ошибки, вряд ли заплатят. Но выход есть — программное обеспечение с открытым исходным кодом.

Крупный Open Source проект в разработке
Крупный Open Source проект в разработке

Читать дальше →
Всего голосов 47: ↑40 и ↓7+33
Комментарии15

prettyPrint

Время на прочтение1 мин
Количество просмотров9K
imageТе из вас кто следит за автором на Github могли заметить, что недавно он добавил новый проект под названием «prettyPrint».
«prettyPrint» — браузерный дампер переменных для JavaScript аналогичный cfdump для ColdFusion. Он позволяет выводить на экран объекты любого типа в виде таблиц для просмотра во время отладки.
Посмотреть пример.
Читать дальше →
Всего голосов 44: ↑38 и ↓6+32
Комментарии16

Google App Engine и High load

Время на прочтение3 мин
Количество просмотров2.9K
Гаджет «Евровидение 2009», который мы, Sterno.ru, сделали для компании Google, оказался отличным опытом в тестировании App Engine и проверки того, на что способна эта технология. Теперь мы гораздо лучше понимаем, как работает «Движок приложений» при высоких нагрузках. Эта статья описывает сильные и слабые стороны Google App Engine, а также подводные камни, с которыми разработчики могут столкнуться в ходе ее использования.
Читать дальше →
Всего голосов 77: ↑67 и ↓10+57
Комментарии22

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность