Pull to refresh
33
0
Chikiro @Chikiro

User

Send message

Азбука хорошего разработчика. Книжки для чтения

Reading time 2 min
Views 3.4K
Часто разработчиков нужно направить, поскольку они не имеют понятия о том, что им нужно изучить для повышения своего уровня. В этой заметке я опишу источники знаний, в моем понимании, необходимые для этой цели. Пишу в порядке, в котором я их предлагаю читать.

Паттерны проектирования

Википедия — там, в принципе, на хорошем уровне все описано и приведены примеры на разных языках.
Базовая книга – классика:
«Приемы объектно-ориентированного проектирования. Паттерны проектирования» — читал книгу давно, и раза 3. Вам того же советую. Даст возможность понимать большое количество терминов, произносимых другими разработчиками.

Рефакторинг

«Рефакторинг. Улучшение существующего кода» — вероятно, эта книга сделала революцию в написании кода. Читается быстро и интересно. Методы рефакторинга должны отложиться в голове до конца жизни. Ваш код отныне будет лучше. В книге есть упоминание про юнит тестинг.
Читать дальше →
Total votes 73: ↑72 and ↓1 +71
Comments 66

Монетизация веб-проектов на начальной стадии. Личный опыт

Reading time 3 min
Views 944
Данный пост родился после нескольких обсуждений в топиках про стартапы. Это мой первый пост на хабре, прошу сильно не бить =).

Назрела проблема


Всех мучает один и тот же вопрос: «Я сделал проект, люди вроде ходят. Вешать ли на этот проект рекламу? А не отпугнет ли это посетителей?»
Я постараюсь изложить свое видение монетизации веб-проектов на начальной стадии развития. Под начальной стадией я понимаю именно тот момент, когда вроде и основной функционал уже работает, и сервисы запущены, и пиаримся разными способами, но большого потока посетителей еще нет. К сожалению, довольно многие проекты не имеют «взрывной» динамики посещаемости и надолго зависают в этой стадии.
Читать дальше →
Total votes 30: ↑12 and ↓18 -6
Comments 13

Запрет индексации сайта поисковыми ботами при помощи.htaccess

Reading time 1 min
Views 5.3K
При активной разработке многие используют копии сайта в других доменах, для эксперементов или доработки сайтов (не на работающем же вносить изменения).
И вот многие сталкиваются с проблемой как отгородить поисковики от этого домена и притом оставить рабочую версию сайта.

Проще всего и без вмешательств в код это сделать при помощи .htaccess
Создаем файл .htaccess и пишем в нем:

SetEnvIfNoCase User-Agent "^Yandex" search_bot
SetEnvIfNoCase User-Agent "^Yahoo" search_bot
SetEnvIfNoCase User-Agent "^igdeSpyder" search_bot
SetEnvIfNoCase User-Agent "^Robot" search_bot
SetEnvIfNoCase User-Agent "^Googlebot" search_bot
SetEnvIfNoCase User-Agent "^msnbot" search_bot
SetEnvIfNoCase User-Agent "^Aport" search_bot
SetEnvIfNoCase User-Agent "^Mail" search_bot
SetEnvIfNoCase User-Agent "^bot" search_bot
SetEnvIfNoCase User-Agent "^spider" search_bot
SetEnvIfNoCase User-Agent "^php" search_bot
SetEnvIfNoCase User-Agent "^Parser" search_bot

Order Allow,Deny
Allow from all
Deny from env=search_bot


для проверки работоспособности можно использовать следующий PHP-скрипт

<?php
if(empty($_POST)) {
?>


ну вот теперь можно полностью эксперементировать и никто не узнает про существование экспериментальной копии Вашего сайта ;)
Открываем сайт представлясь под любым User-Agent
User-Agent
Total votes 30: ↑27 and ↓3 +24
Comments 23

Инструментарий веб-разработки Coghead 2.0: создан на Flex, хостится на Amazon

Reading time 1 min
Views 559
Компания Coghead выпустила вторую версию онлайнового инструментария для разработки корпоративных серверных приложений. Система получила новый интерфейс и теперь она работает не на стандартных скриптах Ajax, а на мощном движке Adobe Flex. Именно этим объясняется свежий новый вид, более 50 новых функций и трёхкратный рост производительности. Среди новых фич — поддержка Open ID и новые виджеты, которые можно перетаскивать мышкой.

Перечень кардинальных новшеств на этом не закончен. Отныне система Coghead размещается на машинах Amazon Elastic Compute Cloud (EC2). Соответственно, созданные вами веб-приложения будут работать оттуда.

Благодаря использованию Flex потенциально можно создавать даже офлайновые программы, которые будут работать без наличия доступа в интернет с помощью технологии Adobe AIR. Такая возможность появится примерно в середине 2008 года, заверяют разработчики.
читать дальше и скриншоты
Total votes 9: ↑9 and ↓0 +9
Comments 10

Секрет воспитания умных детей (часть 1)

Reading time 6 min
Views 6.7K
Совет: Не говорите вашим детям, что они умны. Исследования на протяжении трех десятилетий говорят нам, что акцент на усилии, а не на возможностях или интеллекте, является ключом к успеху в школе и жизни.

Перевод статьи в Scientific American

Будучи блестящим учеником, Джонатан без проблем учился в начальной школе. Он легко справлялся с заданиями и получал пятерку за пятеркой. Джонатан удивлялся, почему некоторым его одноклассникам приходилось стараться куда больше, и родители сказали ему, что у него есть особый дар. В седьмом классе, однако, Джонатан внезапно потерял интерес к школе, отказываясь делать домашние задания и готовиться к тестам. Из-за этого его оценки стремительно ухудшались. Его родители пытались сохранить его веру в себя, убеждая его, что он очень умен. Но их попытки не смогли мотивировать Джонатана (на самом деле он собирательный образ, рисованный с нескольких детей). Он продолжал утверждать, что школьные задания скучны и бессмысленны.
Читать дальше →
Total votes 51: ↑48 and ↓3 +45
Comments 59

Какая JavaScript-библиотека лучшая?

Reading time 1 min
Views 1.3K

Предлагаю обсудить JavaScript-библиотеки по следующим параметрам:


  • Технические и качественные характеристики: функционал, поддержка AJAX и т.д.
    Сфера применения: просты сайты, блоги, веб-магазины и т.д.
    Примеры сайтов с описанием
    Поддержка в фреймворках и CMS: Rails, CakePHP, Drupal, Joomla и т.д.
    Производительность: скорость работы, размер кода
    Наличие дополнительных модулей, плагинов, библиотек, снипеттов и т.д.
    Кроссбраузерность и кроссплатформенность
    Прочие параметры, которые будет интересно обсудить

Читать дальше →
Total votes 7: ↑5 and ↓2 +3
Comments 24

Бэкапы через bacula на Amazon S3

Reading time 7 min
Views 12K
Как известно, все люди делятся на два вида: те, кто ещё не делает бэкапы, и те, кто их уже делает. У тех, кто только начинает делать бэкапы, первым обычно встаёт вопрос о том, каким способом архивировать данные. Простые варианты (вручную нарезать болванки, целиком архивировать каталоги на другие серверы) рассматривать не будем — у них весьма скромные возможности по индексированию и поиску архивных файлов. Вместо этого обратимся к автоматическим системам бэкапов, в частности bacula. Данная статья не рассматривает вопрос, почему bacula. Главные причины — она распространяется под свободной лицензией, доступна для кучи платформ и обладает огромной гибкостью.

Второй вопрос после выбора системы архивации — выбор места, где хранить бэкапы. Bacula позволяет использовать стриммеры, компакт-диски, писать архивы в FIFO-устройства и в обычные файлы. Стриммер удобен на корпоративных серверах, где есть постоянный физический к железу. Хранение архивов в файлах подойдёт, когда объём архивов не превышает объёма жёстких дисков, плюс для надёжности хранения желательно делать RAID-массив с избыточностью, а то и несколько физических серверов для бэкапов, желательно в разных помещениях. Иначе всё это до первого пожара. Нарезать на болванки — это домашний вариант, главный недостаток которого — необходимость регулярного втыкания свежих дисков. Мы же настроили bacula для архивации данных на Amazon S3.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Comments 21

MySQL Performance real life Tips and Tricks

Reading time 9 min
Views 37K
Пообещал вчера написать статью о реальных случаях оптимизации БД MySQL.
Пришлось сегодня вставать утром пораньше чтобы воплотить обещанное в жизнь.
Централизованное управление мыслями поддерживать еще сложно, поэтому не судите строго за казусы и ляпсусы в моей статье.

В последнее время приходится достаточно часто заниматься оптимизацией производительности сайтов. И как правило «бутылочным горлышком» в производительности работы этих сайтов является именно БД, ошибки как в архитектуре так и в выполнении запросов. Начиная от неправильной расстановки индексов, либо совершенным их отсутствием, неправильным (неэкономным) выбором типов данных под определенное поле, заканчивая абсолютно нелогичной архитектурой БД и такими же нелогичными запросами.

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

Читать дальше →
Total votes 147: ↑141 and ↓6 +135
Comments 93

Фонетический поиск

Reading time 4 min
Views 16K
Пару лет назад была задача написать для одного из сайтов такой поиск, который бы распознавал опечатки и предлагал бы исправленные запросы. Было перепробовано несколько вариантов, об одном из которых я и хотел тут написать. Поиск на основе звучания слов может стирать языковые границы, поскольку имена собственные на разных языках созвучны. Например, ищешь «Арнольд Шварцнеггер» на русском — находишь «Arnold Schwarzenegger» на английском, или ищешь «Michael Jordan» — находишь «Майкл Джордан», или ищешь «Чак Норрис» — и вдруг он сам тебя находит. Помимо поиска созвучных слов этот метод нивелирует большое количество опечаток. А то че-то задолбала попса, надо больше про инсайд…

...больше про инсайд
Total votes 123: ↑122 and ↓1 +121
Comments 77

Шаблоны Django. Наследование.

Reading time 5 min
Views 74K
Прочитал статью «Фрагментарное кэширование в MVC веб-фреймворках». Статья описывает проблему кеширования фрагмета отображения, а именно проблему полного разделения контроллера и отображения — контроллер отрабатывает полностью до вызова отображения. Если в отображении мы кешируем фрагмент, это ничего не меняет — контроллер-то уже отработал! В статье описан способ этого избежать: сделать запрос данных «ленивым».

Начав писать, как это должно быть сделано правильно, решил написать, как устроены шаблоны Django, чтобы не-джанговодам тоже было понятно.

Как это сделано в Django?

Читать дальше →
Total votes 48: ↑45 and ↓3 +42
Comments 43

Фоновая загрузка файлов на сервер

Reading time 3 min
Views 5.3K
Все, кто пользуется GMail и завсегдатеи Хабрахабра замечали, что приаттаченные файлы потихоньку загружаются на сервер через несколько секунд бездействия и затем поля с именами файлов заменяются на чекбоксы.

Похожий функционал я реализовал в одном Django-проекте с помощью JQuery.
При выборе ползователем логотипа для визитки, файл логотипа прозрачно загружается на сервер, обрабатывается и затем «отдается» браузеру. и пользователь видит, что в макете логотип поменялся на выбранный им.
Читать дальше →
Total votes 43: ↑37 and ↓6 +31
Comments 41

Несколько полезных сайтов-каталогов со скриптами

Reading time 1 min
Views 1.8K
Поискал ссылки поиском по хабру, не нашел.

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

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

Итак, вот они:
www.hotscripts.com
www.planet-source-code.com
php.resourceindex.com
cgi.resourceindex.com
www.scripts.com/php-scripts
www.phpclasses.org
mymans.org/category/php
Total votes 23: ↑12 and ↓11 +1
Comments 16

Облако тэгов — Django tagging для Django 0.96 #2

Reading time 1 min
Views 2.4K
Продолжение возни с тэгами.

Django-tagging 0.2.1 я не похачил, а наоборот — взял всё самое лучшее из него и перенёс в версию 0.1. Таким образом получилось совместимое с Django 0.96 приложение с готовыми инструментами для создания облака тэгов.

Скачать можно с моего сайта (34Kb). Просто распакуйте архив в папку проекта и добавьте это приложение в INSTALLED_APPS.

#settings.py

INSTALLED_APPS = (
    …
    'myproject.tagging',
)


Очень просто добавить тэги к любой модели вашего проекта. Для этого нужно импортировать из django-tagging поле TagField

Читать дальше →
Total votes 16: ↑10 and ↓6 +4
Comments 5

Создание превью изображения на основне свойства Overflow

Reading time 3 min
Views 6.2K
По просьбам пользователей после прочтения статьи Визуализация данных на CSS

Цель данной статьи заключается в том, чтобы реализовать возможность создания превью для изображения, размеры которого можно устанавливать самостоятельно. Бывает так, что у нас нет свободного места на странице, чтобы показать превью картинки полностью. Но и делать из картинок обрезки не хочется. Трюк, приведенный в статье, позволит создать нужные нам размеры превью и отображать полный его размер при наведении курсора на превью.
читать продолжение
Total votes 62: ↑58 and ↓4 +54
Comments 39

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

Reading time 3 min
Views 4.2K

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

Generating PDF files with PHP and FPDF

Reading time 5 min
Views 111K
Большинство web-сервисов экспортируют данные в разных форматах для дальнейшего использования. Данная статья о том, как экспортировать данные в pdf-формате.
Хотя многие знают как это делать, я опишу кратко для тех кто не знает.
Читать дальше →
Total votes 38: ↑35 and ↓3 +32
Comments 48

Практический JS: избавляемся от утечек памяти в IE

Reading time 2 min
Views 1.2K
Примечание: ниже находится перевод статьи Understanding and Solving Internet Explorer Leak Patterns", в которой автор рассматривает некоторые характерные случаи утечек памяти в IE и предлагает методы для их избежания и устранения. Рассмотренные проблемы не являются чем-то новым или революционным, однако, знать об их существовании должен любой уважающий себя программист клиентских интерфейсов. Мои комментарии далее курсивом.

Опубликована: июнь 2005

Развитие веб-разработок



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

Современные веб-приложения должны разрабатываться с учетом более высоких стандартов. Страница может выполняться в течение часов без дополнительных переходов по сайту, при этом она будет сама динамически запрашивать новую информацию через веб-сервисы. Языковой движок испытывают на прочность сложными схемами отработки событий, объектно-ориентированным JScript и замыканиями (closures), производя на свет все более мощными и продвинутые приложения. При все при этом, учитывая некоторые другие особенности, знание характерных шаблонов утечек памяти становится все более необходимым, даже если они были раньше спрятаны за механизмом навигации по сайту.

Большим плюсом в данной ситуации будет то, что шаблоны утечек памяти могут быть легко обнаружены, если вы знаете, где их искать. Наиболее тяжелые из них, с которыми, возможно, вам довелось столкнуться, имеют подробно описанные методы устранения, которые, скорее всего, в вашем случае потребуют лишь небольшого количества дополнительной работы. Хотя некоторые страницы могут по-прежнему «падать» из-за небольших утечек, самые значительные могут быть легко удалены.

читать дальше на webo.in →
Total votes 34: ↑32 and ↓2 +30
Comments 13

Оптимизация работы с MySQL

Reading time 3 min
Views 77K
Ни для кого не секрет, что работа с базой данных занимает большую часть работы практически любого сайта. И именно работа с БД чаще всего является узким местом веб-приложений.
В этой статье хотелось бы дать практические советы использования MySQL.
Сразу оговорюсь:
  • данная статья написана про MySQL, хотя общие вещи скорее всего справедливы для любой СУБД.
  • все написанное в статье является моей личной точкой зрения, и не является истиной в последней инстанции.
  • советы не претендуют на новизну и являются результатом обобщения прочтенной литературы и личного опыта.
  • в рамках данной статьи я не буду касаться вопросов конфигурирования MySQL.

Проблемы при использовании MySQL можно разделить на следующие три группы(в порядке значимости):
  1. Неиспользование или неправильное использование индексов.
  2. Неправильная структура БД.
  3. Неправильные \ неоптимальные SQL запросы.

Остановимся на каждой из этих групп подробнее.
Читать дальше →
Total votes 54: ↑52 and ↓2 +50
Comments 107

jQuery для самых маленьких или динамическая загрузка страниц (AJAX)

Reading time 1 min
Views 3.5K
В один прекрасный день понадобилось мне сделать динамическую загрузку из базы. До этого я ничего подобного не делал и не интересовался этим вопросом. Я начал искать информацию на эту тему. Нашёл, что нужная мне задача делается при помощи AJAX.

Перерыл очень много различных фреймворков и остановил свой выбор на ныне популярном jQuery. Всё бы хорошо, но принципа работы я сразу не понял, и сходу сделать простую задачу, аля загрузить одну страницу в другую, я не смог. Искал в интернете хоть какую-то помощь. Помог офф. сайт, благо там доков хватает. И вот, разобравшись в этом вопросе, решил сделать небольшой примерчик для «самых маленьких» (для новичков), которые никогда не работали с этой библиотекой.

Для профессионалов он (пример) покажется смешным и простым, но для людей, не имеющим представления что и как и почему — он поможет. Пример снабжен комментариями в коде. В нём показано как загрузить одну страницу в другую, не перезагружая первую, так же немножко прошёлся по базовым основам классов.

Скачать пример можно вот тут
Total votes 26: ↑19 and ↓7 +12
Comments 21

Information

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