Блог

Странная ошибка JavaScript в FireFox

Я уже много раз говорил, что люблю Firefox за то, что он удобен для разработки. Я обожаю его использовать, когда нужно отлаживать JavaScript. Сегодня как раз работал дома над javascript функцией и запустил окошко Error Console. Я всегда его запускаю, чтобы сразу были видны любые ошибки. Даже те, которые не показываются браузером как критичные. Попробуйте открыть это окно и подержать открытым, и вы увидите на большом количестве крупных сайтов ошибки JavaScript. Сайты эти вроде бы работают, но генерят ошибки. Я вот такого не люблю у себя и люблю чистоту, поэтому вылавливаю косяки и чищу их.

Так вот, начал я на своем сайте кликать в том месте, где должна срабатывать JavaScript функция, а мне в лицо ошибка. Нет, мой код работает, но в окне FireFox какая-то ошибка. Причем совершенно непонятная моему глазу и не похоже, что связана с моим кодом. Начал тыкать туды сюды, а она не проходит. Причем появляется даже в невероятных местах, типа: когда кликаешь на заголовке окна или когда открываешь даже новую вкладку с пустой страницей. Она вылезала везде.

Оптимизация размера Web кода

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

Лично я уже давно не забочусь о компактности, когда пишу HTML код. Мне главное, чтобы мне было удобно сопровождать мой код. А то, что пользователю приходится качать пару сотен лишних пробелов в HTML мне все равно. Это всего лишь сотни байт (умноженное на среднее 1.5 из-за UTF-8), которые для современных скоростей ничего не значат. Картинки на сайтах весят сейчас сотни килобайт и именно их нужно оптимизировать.

А ты думаешь о компактности и экономишь на пробелах, когда пишешь HTML код или JavaScript функции?

Программирование под Mac OS X

Блин, времени вообще капитально не хватает. Скачал себе Mono и XCode, а попробовать программировать под Mac OS X все нет времени. Работы куча, да еще и заболел. Уже несколько дней чувствую себя как не очень здоровый (телом, а не о том, о чем мечтают некоторые) человек. Думал заняться тестированием сред разработки под Apple в метро, пока еду на работу, но что-то никак не выходит.

Но то, что уже скачал и установил Mono и XCode – это уже большой шаг в будущее. Как только появится свободная минутка, обязательно попробую. Причем нужно начать пробовать с Mono, там же уже знакомый мне .NET. В XCode и его объектном С я вообще не в зуб ногой. Только слышал о том, что он капитально отличается от классического С++, который используется в окнах и Linux.

P.S. Книжек по программированию под Msc OS X не будет.

Книга Transact-SQL бесплатно

Продолжаю выкладывать Transact-SQL в подлиннике на халяву. Сегодня на свет появляется часть про первичный и внешний ключ. Немного скучноватые могут быть темы, но очень важные. Особенно про внешние ключи. Я замечал, что в России внешники ключами очень сильно пренебрегают. Их иногда не используют только потому, что с ними сложнее удалять. Это ошибка, всегда пользуйтесь ими, потому что выгоды на много больше.

Классы в PHP

Я как-то писал, что не использую классы в PHP и все сайты, которые я сделал были написать в банальном плоском режиме. Но на PHP я ничего круче блога и небольших форумов пока и не писал. Самые крупные сайты, над которыми я работал, были на C#.

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

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

Не знаю почему, но для маленьких сайтов и небольших задач не люблю использовать классы, а пишу все процедурно. А ты используешь классы в PHP? Вопрос конечно же тем, кто знает и использует PHP.

Создание таблиц в Transact-SQL

Продолжаю выкладывать книгу по Transact-SQL. Следующая часть создание таблиц в Transact-SQL.

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

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

Статьи по программированию

Давно я не обновлял hackishcode. На этой неделе на нем появилось сразу две статья: Monitoring Executable Files и Disclosing Passwords. Если кто читал книги серии глазами хакера, то эти примеры уже видел. В данном случае перед нами примеры на C++. Правда заметки на английском, но многих это не останавливает. Как показывает практика, большинство программистов знает английский, или хотя бы умеет читать.

Что мне нравится в программировании

Обожаю оптимизацию. На работе я поддерживаю практически банковскую базу данных (да почему "почти", она и есть бансковская) и работать приходится с сотнями тысяч транзакций миллионов пользователей. На данный момент в основной таблице онлайн транзакция находиться 170 482 890 записей и все это тянется на одном только MS SQL сервере не первой свежести (извините, не могу сказать точно версию) и всего лишь парой гигабайт оперативной памяти. Клиент собирается обновить свое железо, но пока не известно точно когда это будет.

И вот чтобы выжать из существующего старья максимум возможного, приходится работать на оптимизацию. Последние пол года я только и занимаюсь тем, что оптимизирую запросу и код работы с базой данных. Пришлось в одном месте денормализовать базу данных, чтобы она шуршала повеселее, правда денормализация стоит лишними обновлениями данных и поддержкой лишних данных. Мне нравится оптимизация тем, что каждый день приходится бороться придумать что-то новое, чтобы твоя программа работала как можно быстрее и не тормозила на каждом повороте. Тут уже не напишешь говнокода, который "лишь бы работал" и нужно кропотливо проверять все 10 и более раз, прежде чем один раз резануть по живому.

А что в программировании нравится тебе? Писать новый код, оптимизировать существующий, писать сетевой код, создавать интерфейсы, работать с базами данных.... Предлагай свое и рассказывай, кому и что нравится в программировании. Можешь рассказывать и почему.

Gantt Chart Control .NET

Давно я не обновлял свои компоненты, потому что не было времени, но обновления есть, они не могут не есть. Сейчас я занялся обновлением всех своих компонентов. Сегодня на свет выходит Gantt Chart Control .NET. В нем пока изменений, не много, но очень интересные: теперь ты можешь не только перетаскивать работы по рабочей форме, но и изменять размер с помощью мышки. Ну а так же появилась возможность включить подсказки, и при наведении на работу будет появляться подсказска с заголовком и описанием работы.

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

Объединение строк в одну в SQL

В SQL Server почему-то народ часто сталкивается с проблемой объединения значений нескольких строк в одну. Например, допустим, что есть запрос:

SELECT ColumnName
FROM TableName

Допустим, что запрос возвращает три строки:

 Иванов
 Петров
 Сидоров

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

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

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

Пишите мне