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

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

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

Используем память разумно, или mod_wsgi на 256 мегабайтах

Время на прочтение2 мин
Количество просмотров3.2K
Какое-то время назад потребовалось перенести проекты с выделенного сервера на VPS. Для этих целей был выбран slicehost. В общем и целом контора нравится и готов её рекомендовать всем.

Случилась лишь одна проблема: начали приходить уведомления о слишком сильном использовании диска (чтение/запись). Долгое время проблема не находила решения из-за отсутствия времени, но это вылилось в непонятные отказы, сопровождавшиеся статистикой в >200% CPU usage. После долгих извращений, была найдена проблема, а затем и её решение.
Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии97

Оптимизации системы разделения прав доступа в веб-приложении

Время на прочтение19 мин
Количество просмотров7.5K
После написания прошлой статьи про реализацию системы разделения прав доступа в веб-приложении, появилось множество интересных комментариев. В них в основном велись споры о том, что можно сделать её ещё лучше.

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

В этой статье я рассмотрю:
  1. Битовые поля, оптимизация
  2. Serialize с денормализацией таблиц БД
  3. Вы узнаете, как работает система, подобная Zend ACL

Читать дальше →
Всего голосов 38: ↑30 и ↓8+22
Комментарии47

Умный экспорт из SVN с помощью консоли

Время на прочтение2 мин
Количество просмотров4.9K
Использовать svn я начал, работая в windows и соответственно в качестве клиента использовал TortoiseSVN.
В то время я был очень рад новой возможности, описанной в статье Умный экспорт из SVN при помощи TortoiseSVN.
Совсем недавно сделал то, что давно не находилось времени сделать — поставил на свой рабочий компьютер linux.
И вот незадача, ни в одном из графических клиентов, опробованных мной, не обнаружил схожей функциональности.
Мало того. Почитав svn --help не нашёл опции, дающий такой результат.
Обидно. Учитывая, что приучил уже отдел делать такие экспорты для плавного обновления проектов.
В-общем, не буду тянуть: написал на bash скрипт, реализующий сравнение и экспорт отличий между двумя ревизиями.

Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии34

Издержки больших проектов или взгляд на программирование в команде изнутри

Время на прочтение1 мин
Количество просмотров3.8K
Ни для кого не секрет, что разработка больших программных продуктов требует не только эффективного руководства, но и эффективных процессов, которым следуют все разработчики. На примере своей компании я постараюсь описать жизненный цикл проекта и цену его разработки и поддержки. Те, кто работает в небольших командах из нескольких человек, смогут сравнить и представить, что их ждет при увеличении штата или же чего они избежали, если расширяться не планируют. А в комментариях можно покритиковать, указать на ошибки и предложить альтернативы.

Итак, собственно, к делу.

Мы занимаемся системами электронной биржевой торговли, аналитикой рынка и поставкой маркет-данных в реальном времени. К таким системам предъявляются повышенные требования по надежности — каждая ошибка может привести к потере больших денег.
Читать дальше →
Всего голосов 82: ↑76 и ↓6+70
Комментарии112

jQuery для начинающих. Часть 3. AJAX

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

Представляю Вам третью статью из серии jQuery для начинающих. В этот раз я постараюсь рассказать о реализации AJAX запросов...
Читать дальше →
Всего голосов 77: ↑71 и ↓6+65
Комментарии36

Делаем страницу 404-й ошибки разумной с помощью Google

Время на прочтение2 мин
Количество просмотров6.4K
Вот я прошёлся по блогам и сайтам, которые висят у меня в подписках, и понял, что всё печально. Если намеренно вызвать страницу 404-й ошибки, то можно напороться на все возможные отмазки, пустую страницу, либо на страницу, которую генерит сервер. Ну или на крайний случай — sitemap. Часто любят выкладывать туда смешную картинку.
Читать дальше →
Всего голосов 116: ↑108 и ↓8+100
Комментарии45

Интерфейсы vs. классы

Время на прочтение4 мин
Количество просмотров284K
Обсуждая с различными людьми — в большинстве своём опытными разработчиками — классический труд «Приёмы объектно-ориентированного проектирования. Паттерны проектирования» Гаммы, Хелма и др., я с изумлением встретил полное непонимание одного из базовых подходов ООП — различия классов и интерфейсов.

Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии161

Оформление кликабельных картинок

Время на прочтение1 мин
Количество просмотров7.4K
img

Очень практично оформлять кликабельные картинки, к примеру при наведении на картинку появится изображения говорящее о том что эта картинка кликабельна — как на картинке выше.
Читать дальше
Всего голосов 63: ↑57 и ↓6+51
Комментарии84

7 критических ошибок при приеме заказа на изготовление сайта (личный опыт клиента)

Время на прочтение3 мин
Количество просмотров6.4K
Мой клиент и хороший друг Александр Успенский, прочитав статью 7 критических ошибок при заказе сайта, написал своего рода ответ (или даже пародию) на нее. Некоторые моменты спорные, но в целом статья, на мой взгляд, полезна разработчикам как адекватная обратная связь раздраженного клиента на работу не слишком профессиональной веб-студии :)

Первая и самая большая ошибка изготовителей сайтов состоит в том, что они сосредотачивают свои усилия на угождении клиенту, а не на предложении дополнительных (я уже молчу об уникальных) возможностей, которые он получит, создавая сайт именно в этой студии.
Читать дальше →
Всего голосов 42: ↑31 и ↓11+20
Комментарии31

Борьба с DDOS и DOS на уровне nginx

Время на прочтение1 мин
Количество просмотров8.2K
FreeBSD, сетевая Intel fxp, порт 100Мбит, polling, http accept-filter
в sysctl:

sysctl kern.maxfiles=90000
sysctl kern.maxfilesperproc=80000
sysctl net.inet.tcp.blackhole=2
sysctl net.inet.udp.blackhole=1
sysctl kern.polling.burst_max=1000
sysctl kern.polling.each_burst=50
sysctl kern.ipc.somaxconn=32768
sysctl net.inet.tcp.msl=3000
sysctl net.inet.tcp.maxtcptw=40960
sysctl net.inet.tcp.nolocaltimewait=1
sysctl net.inet.ip.portrange.first=1024
sysctl net.inet.ip.portrange.last=65535
sysctl net.inet.ip.portrange.randomized=0

Читать дальше →
Всего голосов 48: ↑45 и ↓3+42
Комментарии42

Чёрточки: только ли тире, минус и дефис?

Время на прочтение4 мин
Количество просмотров178K
Однажды вечером я почувствовал, что пришло время расширить 97‐ й параграф «Ководства» Артемия Лебедева.

На клавиатуре одна чёрточка, она обычно правее нуля и повыше букв «З» и «Х». Неосведомлённые люди называют её попеременно то дефисом, то минусом, то тире. Лебедев объясняет нам, что это четыре (учитывая две разновидности тире) различных символа. На самом деле их как минимум девять, и об этом я и расскажу вам сейчас.

Читать дальше →
Всего голосов 311: ↑288 и ↓23+265
Комментарии208

Множественные числа

Время на прочтение1 мин
Количество просмотров2.8K
Довольно часто на сайтах встречаются нелепые словесные конструкции, которыми программист обезличено хотел показать какой либо количественный параметр, например:

на сайте 22 человек ( а должно быть 22 человека )
1 комментариев ( понятно, что расчёт шёл на 10+ комментариев, но это не выход )

Читать дальше →
Всего голосов 44: ↑39 и ↓5+34
Комментарии92

Разгони свой сайт: gamma-версия

Время на прочтение4 мин
Количество просмотров924
Примерно три недели назад стартовал проект, посвященный методам оптимизации времени загрузки веб-страницы на клиенте.

Почему оптимизация?



На мой взгляд, на текущий момент веб-разработчики очень мало уделяют внимания доступности (accessibility) и удобству пользования (usability) проектов, над которыми работают. Для них сайт — это килобайты кода и пара картинок, которые нужно как-то показать клиенту. О пользователе никто при этом не думает, в лучшем случае, прикрываясь такими выражениями, как: «у меня отсюда и так все быстро грузится» или «каналы сейчас не те, что 10 лет назад».

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

Почему клиентской части?



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


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

WEBoptimizator

Читать дальше →
Всего голосов 77: ↑74 и ↓3+71
Комментарии120

Об иностранных инвестициях

Время на прочтение4 мин
Количество просмотров650
Всем привет! Совсем недавно я вернулся из поездки в Финляндию, главной целью которой было продвижение собственного программного продукта.

Теперь я могу поделиться своим (пока небольшим) опытом в этой области и рассказать, на что следует обращать внимание при выходе на европейский рынок.

Рассказ будет интересен как людям бизнеса, так и разработчикам (в том числе веб-разработчикам).

Как обычно, добро пожаловать в комментарии, если я что-то освещу не совсем понятно или не совсем подробно.

Читать дальше →
Всего голосов 49: ↑48 и ↓1+47
Комментарии27

Описание более 350 команд Линукс

Время на прочтение2 мин
Количество просмотров41K
На дигге была найдена интересная ссылка (PDF-версия) — описание более, чем 350 команд Линукс (на английском языке). Фактически представляет собой шпаргалку, где команды разбиты на категории. Отмечу, что это не простой список команд, а именно описание с применением. Чтобы не быть голословным приведу несколько примеров.

Читать дальше →
Всего голосов 74: ↑70 и ↓4+66
Комментарии89

CSS макеты: фиксированные, резиновые, эластичные. Плюсы и минусы

Время на прочтение2 мин
Количество просмотров6.5K
Примечание: ниже выложен перевод статьи «CSS Layouts: The Fixed. The Fluid. The Elastic.», в качестве русского аналога термина layout используется макет. В статье рассматриваются два вида «резинового» макета, поэтому один из них для различия обозначен как «эластичный» (elastic, спасибо MTonly за ценный комментарий). Автор резюмирует основные плюсы и минусы каждого из рассматриваемых макетов (способов верстки).

Какой макет верстки (с использованием Каскадных Таблиц Стилей, CSS) можно считать наилучшим? Каждый из них имеет свои хаки (quirks) и свои уникальные плюсы и минусы. Будет ли один из них более удобен для пользователя, чем все остальные? Насколько просто им будет пользоваться? Какие есть у каждого из них проблемы, и как их обходить? Верстается ли один из них проще всех остальных? Есть ли среди них какой-либо ущербный, совершенно непригодный? Скорее всего, многие однозначно ответят на эти вопросы, но я не буду так торопиться. Каждый из этих макетов мне нравится, и каждый применим в том или ином случае, если делать это с умом и внимательно проверять простоту использования и одинаковую доступность для всех категорий пользователей. Все они являются частью уровня представления (presentational layer) для вебсайта, поэтому большинство вопросов по доступности вытекают из корректного использования семантики и общих правил верстки. Далее я опишу свой взгляд на жестко фиксированный (rigid fixed), адаптивный резиновый (adaptable fluid) и расширяемый эластичный (expandable elastic) макеты.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии45

Практический CSS/JS: уменьшаем время загрузки страницы

Время на прочтение1 мин
Количество просмотров4K
Примечание: ниже находится перевод двух близких статей («Delay loading your print CSS» и «JS includes — the saga continues…») по оптимизации загрузки страницы при наличии нескольких файлов стилей или скриптов.

У вас есть два вызова CSS-файлов на странице, например:

<link type="text/css" rel="stylesheet" href="screen.css"
      media="screen" />
<link type="text/css" rel="stylesheet" href="print.css"
      media="print" />


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

читать дальше на webo.in →
Всего голосов 25: ↑23 и ↓2+21
Комментарии49

Практический HTML: улучшаем семантику ссылок

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

Примечание: ниже перевод статьи «Boost Your Hyperlink Power». В ней освещается использование атрибутов rel и rev, а также некоторые микроформаты.



Часть HTML-тегов и атрибуты мы используем каждый день в свой работе. Заголовки, параграфы, списки и картинки являются основой разметки каждого веб-разработчика. Но наиболее распространенным элементом, наверное, будет ссылка — простой тег, который связывает воедино все страницы, создавая ту самую беспорядочную структуру, которую мы называем Всемирная Сеть Интернет (WWW).



Ссылка как она есть



Весь потенциал ссылок заключается в атрибуте href, сокращение от hypertext reference. Он создает одностороннюю связь текущей страницы с другим ресурсом, обычно другой такой же страницей в интернете:



   <a href="http://allinthehead.com/">


Атрибут href находится в открывающем теге a, между открывающим и закрывающим тегами находится текст для описания ссылки:



   <a href="http://allinthehead.com/">Drew McLellan</a>


«Ну и что», — скажите вы. — «Это я все и так знаю», — и будете абсолютно правы! Но у ссылки есть еще кое-что, кроме атрибута href.


Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии44

Практический JS: «отложенная» загрузка

Время на прочтение1 мин
Количество просмотров11K
Примечание: ниже представлен перевод двух последовательных статей «The window.onload Problem — Solved!» и «window.onload (again)», посвященных оптимизации исполнению скриптов при загрузке страницы, эта проблема была предварительно затронута в статье: «Как JavaScript тормозит Веб (и что с этим делать)?»

Для начала определимся с самой проблемой. Событие window.onload используется программистами для старта их веб-приложения. Это может быть что-то довольно простое, например, выпадающее меню, а может быть и совсем сложное, как пример, запуск почтового приложения. Суть проблемы заключается в том, что событие onload срабатывает только после того, как загрузится вся страница (включая все картинки и другое бинарное содержимое). Если на странице много картинок, то можно заметить некоторую задержку между загрузкой страницы и тем моментом, когда она начнет фактически работать. На самом деле, нам нужно только узнать способ определить, когда DOM полностью загрузится, а не ждать еще и загрузку картинок.

читать дальше на webo.in →
Всего голосов 19: ↑18 и ↓1+17
Комментарии28

FWC: SmartSelect — тулкит для работы с компонентами форм типа select, combobox и т.д.

Время на прочтение2 мин
Количество просмотров3.4K
FWC:SmartSelect 2.7

хей йо)
начну.
всем известны проблемы с тегом select в html: отсутствие возможности настройки внешнего вида, перекрывание абсолютно позиционированных слоев, отсутствие комбобоксов (выпадающих списков с возможностью ввода), отсутствие нормального мультивыбора и некоторые другие. все они имеют некоторые, чаще всего корявые, решения, которые врядли можно назвать панацеей.

когда мне всё это надоело, я написал тулкит, который решает все эти проблемы одним махом.
этот тулкит позволяет максимально просто создать «поддельный» выпадающий список, который на первый взгяд идентичен стандартному тегу select, но лишенный всех его недостатков.

кроме того он позволяет использовать некоторые очень полезные функции, крайне популярные в последнее время. например, удобный API для управления списками и пунктами (создание, редактирование, удаление), ajax-подгрузка каскадных списков (когда содержимое некоторых списков зависит от других), а также создание простых текстовых полей с автоподстановкой значений при вводе (в том числе и из серверных ресурсов, аналогично Google Suggest).

все настройки для компонентов smartselect описываются в отдельном xml-файле или json-строкой.

Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии85

Информация

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