Оставляем базу данных на потом

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

Функции или классы — мысли в слух

Раньше я думал, что программирую плохо, потому-что мне не хватает знаний о теории программирования. Теперь, когда в башке сидит куча теоретической информации — типа «принцип открытия закрытия«, «правило подстановки Барбары Лискоу«, «принцип инверсии зависимостей» и т.д. Я понимаю, что программирую плохо, потому-что слишком много думаю о том, что пишу. Но продолжая испытывать неудовлетворенность от написанного […]

Наследование против композиции, что предпочтительнее?

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

Фриланс. Проекты большие и маленькие

Не так давно я считал себя заядлым фрилансером. Так мне нравилось ни от кого не зависеть, что мне казалось будто вся моя оставшаяся жизнь целиком и полностью будет связана с работой через Интернет. Я даже придумал для себя набор правил и условий, которым должен был удовлетворять каждый заказ за выполнения которого я брался. Сейчас уже […]

Маска подсети. Вы уверены, что понимаете для чего она нужна?

Недавно мне довелось проводить собеседование с соискателями на должность инженера-программиста в нашу компанию. Обязательным условием приема на работу было — хорошее знание и понимания основ функционирования локальных вычислительных сетей (ЛВС). По итогам собеседования я поразился тому, что ребята, которые совсем недавно закончили ВУЗы города по техническим специальностям, плохо понимают, что такое маска подсети. В этом […]

Динамическая загрузка скриптов и callback

Появилась у меня простенькая задача — после загрузки модулей Снапа вызвать callback функцию. Для Огнелиса и Оперы тупо использовал событие onload. Код примерно такой: var s = document.createElement( ‘script’ ); s.src = ‘la-la-la.js’; s.onload = function() { …. } Под Ослика пришлось, как всегда, подшаманить. Особенность загрузки моего Снапика заключается в том, что он активируется […]

Связность модуля

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

Часть 3. О том, как сократить время на исправление ошибок

Проектирование — занятие, безусловно, полезное, но даже хорошая проектная документация не спасет от ошибок при написании кода программы. Когда-то, очень давно, я наивно полагал, что код бывает двух типов: рабочий и нерабочий. При этом, почему-то, совершенно не думал о том, что исходные тексты программы пишутся не только для интерпретатора или компилятора, но и для других […]

Часть 1. Об ошибке, которая приводит в тупик

Самая большая ошибка, когда-либо совершенная мной, заключалась в том, что при выполнении многих проектов я не занимался проектированием на бумаге. Мне казалось, что я прекрасно удерживаю все аспекты разработки в голове. Эта иллюзия была настолько сильной, что я списывал недостатки кода на что угодно, кроме собственной профессиональной близорукости и некомпетентности. Благо, после некоторых мучений, я […]

JavaScript. Техника программирования с использованием флагов.

Программирование на JavaScript имеет один серьезный недостаток — необходимо постоянно думать о совместимости в различных версиях браузера. Очень часто, приходится писать несколько вариантов реализации одного и того же алгоритма. Проверять каждый раз под каким браузером запущен код — занятие нелепое! Удобно в начале выполнения скрипта определить флаги, по которым определять поддерживает браузер то или иное […]