Автор будет очень признателен, если Вы кликнете по одной из белых ссылок выше.
Вам это ничего не стоит, а автору сайта будет приятно ;)
Найдено страниц: 36 [показано 10]
Урок информатики для мелкософта (пояснение к залепе №8)
Степень соответствия запросу: 36,6%
Фрагменты текста поста : ... позволял бы получать машинный код, хотя бы сравнимый с ассемблерным вариантом... ... позволял бы программисту (хотя бы частично) управлять генерацией получаемого кода... ... А получится следующее: для объекта a будет вызван метод T operator+(const T&) const , которому в качестве параметра будет "скормлен" объект b... ... этот метод что-то сделает (например прибавит одно к другому) и создаст временный объект типа Т для хранения результата... ... затем метод вернет ссылку на созданный временный объект (назовем его " объектом D ")... ... будет вызван метод объекта с : T& operator=(const T&) , т... ... этот метод и приведет объект с в соответствие с состоянием объекта D , переданного в качестве аргумента... ... Временный объект D будет уничтожен... ... Первоочередную важность тут имеют не вызовы методов и не махинации с объектами, а тот факт, что наше простейшее и казалось бы безобидное выражение c = a + b приводит к автоматическому (скрытому от наших глаз) созданию и уничтожению объекта со всеми вытекающими отсюда накладками... ... Но тут я хочу напомнить, что создание объекта - это не только выделение памяти под сам объект, но и создание и инициализация всех его членов-полей (которые, в свою очередь, тоже могут быть объектами), а также выполнение конструктора этого объекта и всех конструкторов всех его предков... ... Соответственно уничтожение объекта - это вызов деструкторов объекта и всех деструкторов всех его предков плюс уничтожение всех его членов-полей, которые тоже могут быть объектами... ... Ну, а если этот объект представляет собой, например, таблицу из базы данных, который, вдобавок ко всему сказанному, при инициализации будет устанавливать соединение с этой самой БД и загрузку данных из нее, отъедая не только память и процессорное время, но еще и канал связи... ... Ладно, давайте перейдем к "сокращенной" записи описанной выше операции и подумаем вот над чем: теоретически методы operator+() и operator+=() должны делать одно и тоже, различие лишь в том, куда направится результат... ... Берем выражение a += b и препарируем его: для объекта a будет вызван метод T& operator+=(const T&) , которому в качестве параметра будет "скормлен" объект b... ... этот метод что-то сделает с объектом а (изменит его состояние ) и вернет ссылку на объект а... ... Отличие шарпа от С++ (в данном случае) в том, что наши переменные a и b являются на самом деле не "хранителями" объекта, а всего лишь ссылками на него... ... Для пояснения ситуации приведу кусок кода из "Залепы №8" (далее все написано на C#): Пример кода: MyCls a = new MyCls()... ... теперь ссылается на тот же объект в памяти, на который ссылается a... ... x становится равным 4 (они же ссылаются на один и тот же объект) после выполнения сгенерированного компилятором оператора operator+=() происходит что-то очень странное - связь переменных a и c внезапно разрывается, ибо теперь они указывают на совершенно разные объекты... ... Разве наше сложение не должно просто изменить объект, на который ссылается переменная a и всё... ... Получается, что оператор сложения создал временный объект с результатом (помните " объект D "... ... Поэтому, если вам захочется самостоятельно перегрузить метод operator+=() или его аналоги для других операций, то просто попейте воды, сделайте несколько глубоких вдохов и расслабьтесь - вам перегрузить эти методы не удастся... Подробнее: http://fit-media.com/post_1198760520.htmlКручу, верчу, обмануть хочу!
Степень соответствия запросу: 26,2%
Фрагменты текста поста : ... Поворот объекта в фотошопе"... ... :) Итак, давайте научимся поворачивать объекты в Photoshop... ... Все трансформации (а поворот - именно трансформация) в Photoshop применяются ко всему текущему слою... ... Разберем их: Scale - масштабирование (увеличение/уменьшение) Rotate - поворот Screw - наклон Distort - искажение Perspective - перспективное преобразование Warp - изгибание Rotate 180 - поворот на 180 градусов (переворот) Rotate 90 CW - поворот на 90 градусов по часовой стрелке Rotate 90 CCW - поворот на 90 градусов против часовой стрелки Flip Horizontal - отражение горизонтальное Flip Vertical - отражение вертикальное Самые простые трансформации - это последние 5 пунктов - повороты на углы кратные 90 градусам и отражения... ... Давайте перейдем к следующему пункту меню Transform - повороту (Rotate)... ... И чем дальше вы утяните курсор, тем больший угол будет у поворота... ... Если при повороте держать нажатой клавишу Shift , то объект будет поворачиваться на угол, кратный 15 градусам... ... Таким способом можно легко и точно повернуть объект на 15, 30, 45, 60, 75 и более градусов... ... Как видно из названия, эта трансформация позволяет наклонять объекты... ... Это значит, что нажав левую кнопку мыши и потянув в сторону вы повернете объект... ... режим Free Transform как бы объединяет в себе два режима - масштабирование и поворот... ... :) %%%Adobe Photoshop, поворот картинки, трансформация изображения, transform, графический редактор%%%... Подробнее: http://fit-media.com/post_1212106379.htmlОптимизируем мышиную возню
Степень соответствия запросу: 22,85%
Фрагменты текста поста : ... и сравню их с Adobe Photoshop : чтобы создать копию объекта, схватите его левой кнопкой мыши, оттащите и, не отпуская левую кнопку, щелкните правой... ... При этом исходно-захваченный объект вернется на свое место, а у вас "в руках" окажется его копия, которую вы можете тащить дальше... ... левый клик приводит к выделению объекта... ... При этому вокруг объекта появляются контрольные квадратики, тягая которые можно передвигать и масштабировать объект... ... Повторный левый клик по уже выделенному объекту меняет контрольные квадраты на контрольные стрелки, с помощью которых можно поворачивать и наклонять объект... ... Правда одновременно с масштабированием можно еще и поворачивать объект... ... Но зато для переключения в другие режимы (например для наклона объекта) приходится делать правый клик по объекту и выбирать нужный режим из выпадающего меню... ... Не забывайте, что даже с таким "скромным" набором элементов управления можно выстраивать очень хитрые комбинации типа: схватить объект левой кнопкой мыши, тащить объект с нажатой Ctrl + клики правой кнопкой... ... Для вышеописанного выше "китайского кода" может быть такое, например, объяснение: левой кнопкой хватаем и тащим объекты по экрану... ... клик правой кнопкой вызывает создание копии объекта в текущей позиции... ... Часто даже матерые пользователи забывают (а многие об этом и не догадываются), что объекты можно таскать не только левой кнопкой , но и правой и даже средней... ... Например, в проводнике (Microsoft Windows Explorer) перетаскивание файла левой кнопкой вызовет действие по умолчанию (перемещение или копирование, в зависимости от того что и куда тащите), а перетаскивание того же файла правой кнопкой позволит самостоятельно выбрать действие: копировать, переместить или создать ярлык... ... Везде где можно используйте возможности технологии "Drag-and-Drop" Пользователю гораздо удобнее схватить объект и перетащить его в корзину или в другое окно, чем отметить объект и потом лазить по пунктам меню (или по многочисленным тулбарам) в поисках команды удаления/переноса... ... Но с реализацией такого поведения не следует переусердствовать - всегда должна быть возможность отключить автоматику и позволить пользователю самому решать, что и когда должно быть видимо у него на экране... Подробнее: http://fit-media.com/post_1199978157.htmlЗалепа №9. Microsoft друзей не признает.
Степень соответствия запросу: 6,91%
Фрагменты текста поста : ... Голуба "Правила программирования в С и С++" (речь идет именно о C++): Цитата: Как-то раз я видел интерфейс, в котором объект "календарь" позволял пользователю интерактивно выбирать дату, щелкая мышью на каком-либо из дней, показанных на изображении календаря... ... "Календарь" затем экспортирует эту дату в другие части программы, помещая ее в объект "дата", который возвращается из сообщения get_date()... ... При выполнении должным образом единственным видимым в других частях программы объектом был бы объект "дата"... ... "Дата" использовала бы объект "календарь" для реализации сообщения "инициализируй_себя" (которое могло бы быть конструктором), но "календарь" бы содержался внутри "даты"... ... Объект "дата" также мог бы поддерживать другие инициализирующие сообщения, такие как "инициализируй_себя_от_редактируемого_ввода" или "инициализируй_себя_из_строки", но во всех случаях объект "дата" отвечает за нужное для инициализации взаимодействие с пользовательским интерфейсом... ... никто, кроме "даты", даже бы не знал о существовании объекта "календарь"... ... Затем вы можете передавать объект "дата" всюду, куда необходимо... ... Только такой тип проектирования позволяет создавать действительно переносимый код, который без всякой адаптации можно встроить в свою программу... ... Следуя описанному выше работа с классом "дата" должна выглядеть примерно так: Пример кода: CDate cd = new CDate()... ... // создали объект "дата" с текущей датой внутри cd = new CDate("15... ... Из третьего пункта следует, что объекты класса CCalendar будут создаваться не пользователем, а только классом CDate , им же они будут контролироваться в течении всей жизни календаря и, в конце-концов, он же их будет и уничтожать... ... Судя по первым двум пунктам, наши объекты CDate и CCalendar будут активно вызывать методы друг друга... Подробнее: http://fit-media.com/post_1199568462.htmlЗалепа №12. Microsoft не знает собственного кода.
Степень соответствия запросу: 2,09%
Фрагменты текста поста : ... Microsoft не знает собственного кода... ... Недостатком здесь служит тот факт, что обработчик получает коды клавишей, а не коды символов... ... Это приводит к серьезным проблемам при написании программ работы с текстом, которым нужны не коды клавиш, а именно коды набираемых пользователем символов... ... Фактически оно наступает, когда в буфер клавиатуры попадает очередной символ и обработчик этого события получает как раз код символа, а не клавиши... ... ) возможность указать системе, что принятый символ не должен проходить дальнейшую обработку и должен покинуть очередь вода... ... Например, если требуется ввести сумму, то нужно из потока ввода удалить все символы кроме цифр, точки, минуса и возможно кода клавиши "Забой" ( BackSpace )... ... Вот этот пример со всеми комментариями: Пример кода: // Boolean flag used to determine when a // character other than a number is entered... ... :) Ладно, вот еще вариант, на этот раз мой: Пример кода: private void textBox1_KeyDown(object sender, System... Подробнее: http://fit-media.com/post_1203179184.htmlAJAX — WEB 2.0 за 5 минут
Степень соответствия запросу: 1,8%
Фрагменты текста поста : ... Поскольку вся библиотекуа представляет собой всего один обычный файл с java-скриптом, то и подключается он стандартным HTML-тэгом: Пример кода <... ... Для примера вставим внутрь своей страницы такой код: Пример кода <... ... Функция $('#my_container') вернет объект jQuery, который имеет массу методов, выполняющих самые разные действия... ... Код: Ссылка для запуска скрипта <... ... Гораздо чаще встречается ситуация, когда нужно отправить серверу какие-то данные и получить ответ, который, затем необходимо всунуть в контейнер... ... Код: Файл name... ... ) Проблема встает, когда ваша форма содержит десятки элементов ввода &mdash... ... Писать код, считывающий все эти значения, чтобы передать их скрипту &mdash... ... Код: Новый name... ... Просто добавь воды... ... /html> Чуть комментариев к коду... Подробнее: http://fit-media.com/post_1262093659.htmlЗалепа №3. Майкрософт - антиглобалист!
Степень соответствия запросу: 1,63%
Фрагменты текста поста : ... Смысл этого отказа остается непонятным - без глобальных объектов просто невозможно написать ни одной программы, в крайнем случае хотя бы один объект но все же будет глобальным... ... Например объект, представляющий само приложение :) Но давайте лучше рассмотрим КАК это выглядит на практике... ... Думаю, никто не будет спорить, что в любой программе есть функции, не привязанные к какому-то определенному объекту, т... ... Так же есть и объекты, не являющиеся членами других объектов, т... ... Ну разве это: Пример кода: namespace MyVariables { int a, b, c... ... } хуже чем это: Пример кода: namespace MyNamespace { public class МойНафигЗдесьНеНужныйКласс { public static int a,b,c... ... } } Меня пол-часа бил истерический хохот, когда я впервые увидел вот эту супер-ООП-конструкцию: Пример кода: static class Program { static void Main(){... Подробнее: http://fit-media.com/post_1197554266.htmlОптимизация PHP-кода
Степень соответствия запросу: 0,99%
Фрагменты текста поста : ... Если вам необходимо определить время, когда скрипт был запущен, лучше используйте $_SERVER[&rsquo... ... Если функции замены строк, может принимать в качестве аргументов как массивы, так и одиночные символы, и если ваш список аргументов не слишком длинный, подумайте над тем, чтобы записать несколько одинаковых выражений замены, проходя один символ за раз, вместо одной строки кода, которая принимает массив поиска и замены Лучше использовать конструкции else if , чем несколько конструкций if... ... Прерывайте свои соединения с БД, когда закончите работать с ними... ... Инкремент свойства объекта (т... ... Конечно, вы можете использовать это только тогда, когда в вашей строке нет переменных... ... Часто это излишне, поскольку методы и объекты занимают много памяти... ... Если в вашем коде есть функции, работающие очень долго, может стоит их переписать на C в виде расширения... ... Профилирование покажет вам, сколько времени выполняются части вашего кода... Подробнее: http://fit-media.com/post_1207831883.htmlФайлы vs базы данных.
Степень соответствия запросу: 0,5%
Фрагменты текста поста : ... Итак, последовательность действий модуля сбора статистики Lasto-блога примерно такова: при обращении серфера к любой странице сайта запускается один и тот же скрипт, который должен собирать статистическую информацию: кто пришел (серфер или бот), откуда он пришел (сайт-источник), куда он пришел (страница нашего сайта) и т... ... Кстати, анализируя этот файл можно увидеть, какие страницы сайта проиндексированы какими поисковыми системами (были посещены поисковыми ботами) и когда это произошло... ... В качестве дат (видимо для оптимизации) используются целочисленные значения, равные количеству дней, прошедших с некой фиксированной даты (1 января 2000 года)... ... html в определенный день, нужно сперва вычислить сколько дней прошло с 1 января 2000 года до искомой даты, затем «заглянуть» в ячейку массива Пример кода $ar['pages']['/stat... ... Тут можно немного оптимизировать процесс и сделать обращение вида Пример кода $ar['allsein']['google... ... Случаи когда с данной поисковой машины еще не было посетителей и нужно создавать целую ветку массива рассматривать не будем... ... тут затронута обработка данных только из одного «раздела» статистики (а ведь скрипт еще должен скорректировать данные и в остальных), не описан блок, который проверяет доступность сайта для данного юзер-агента и хоста-источника (а он жрет времени тоже немало), не учтены потери на выделение/освобождение памяти и копирование целых веток массива, если автор решил (для упрощения программирования) отделить часть массива например так: Пример кода $as = $ar['allsein']... ... :-) Структура, например, такая: Структура таблиц Таблица se_hosts -------------------- ID1 — уникальный числовой номер (используется для связи таблиц) Host — имя хоста поисковика Таблица se_query --------------------- ID2 — уникальный числовой номер (используется для связи таблиц) SH_ID — уникальный номер для ссылки на первую таблицу Query — текст искомой фразы Таблица se_hits ------------------- Q_ID — уникальный номер для ссылки на вторую таблицу Date — кво-дней с 1 января 2000 года Hits — количество хитов за этот день Естественно первая и третья таблицы будут иметь индексы по первым двум полям, а вторая — по всем... ... Куда ж без них :-) Итак, серфер пришел, что происходит в скрипте... Подробнее: http://fit-media.com/post_1222679684.htmlСтатичные файлы vs скрипты. Невидимое зло.
Степень соответствия запросу: 0,43%
Фрагменты текста поста : ... Совсем другое дело, когда код выполняется на виртуальном хостинге, где размещена пара сотен сайтов, каждый из которых обслуживает десятки клиентов одновременно... ... кода... ... Казалось бы нагрузка не такая уж и существенная, но все же вариант, когда стили хранятся в отдельных файлах гораздо предпочтительнее, т... ... Проблема ужесточается тем, что времена когда страница сайта строилась из одного шаблона, давно прошли и ныне страницы современных сайтов собираются из кучи мелких шаблончиков - под каждый блок сайта свой шаблон и, возможно, не один... ... Конечно офигенно круто, если ваша CMS может, практически без каких-либо изменений в коде, работать с почти любой, установленной на сервере, СУБД... ... если запрос использует пяток таблиц, завязанных перекрестными ссылками в тугой узел, обильно приправленный полу-десятком условий с сортировками, группировками и прочими JOIN'ами, то объем кода, который требуется написать, чтобы все это добро впихнуть в ту же ActiveRecord становится в несколько раз больше, чем сам чистый SQL-запрос... Подробнее: http://fit-media.com/post_1283692130.html
