Category: it

dog

Дельфин - QT

Дельфин, как обычно, гениален.

Никогда бы не подумал, что мне понравится что-то, что содержит значительную долю абстракционизма.
Но эта песня (впрочем, как всегда у Дельфина) удивительно точно задевает струны души.


dog

Microsoft Visual Basic для приложений

   Встроенный Visual Basic приложений Microsoft очень удобно редактировать на двух мониторах.
   На одном - приложение, на другом - редактор Basic'а.

   Только вот, будете работать - снимите галочку "Auto Syntax Check". Иначе когда вы в стопятьсотый раз перейдёте на другую строку (например, чтобы скопировать выражение), при этом не дописав до конца строку кода - вам захочется разбить монитор об голову разработчика среды разработки. Действительно, разве можно было сообразить, что в России найдутся люди, которые прыгают со строчки на строчку, что-то копируют, а не пишут её от начала и до конца с клавиатуры?

5.11 КБ


   Похоже, что Microsoft всерьёз не рассчитывала, что разработчики Visual Basic будут уметь пользоваться буфером обмена. Что ж, легенды о легионах программистов-индусов, работающих за еду, кажутся мне не такими уж вымышленными.



   И ещё из интересного. Как вы думаете, какой числовой эквивалент логической истины и логической лжи в Visual Basic'e? Думаете, 0 и 1? А вот и не угадали, цитирую:

•  Integer. False (0) if a cell doesn't exist; True (-1) if it does.

   Йа фшоке, дорогая ридакцыя!



   А ещё в Visual Basic'е совершенно непонятно, когда для передачи параметров методу класса нужны скобки, а когда они лишние. На мой взгляд передача параметров без скобок выглядит довольно стрёмной - но она видимо досталась в наследство от старого классического Basic'а.

   Ярчайший пример - метод Select объекта Window. Согласно документации, параметры к нему должны передаваться в скобках:

10.41 КБ


   Однако, на практике оказывается, что если параметры заключить в скобки - такую конструкцию Basic сочтёт ошибочной:

14.55 КБ


   В то же время без скобок всё замечательно работает:

4.57 КБ




   Главное преимущество Visual Basic'а- полная интеграция с внутренней объектной моделью программных продуктов семейства Microsoft Office.

   И кстати, очень полезная при разработке для Microsoft Office функция - запись макрокоманд. Включаешь запись, выполняешь все нужные действия, а потом смотришь, какие объекты и методы они использовали. Зачастую они оказываются весьма нетривиальными.

   Вот, например, в Microsoft Visio есть объект фигуры Shape. Кажется, что должно быть свойство, позволяющее задать толщину её линии, например так:

•  Shape.LineWeight = 0.24

   Но нет! Кто бы мог предположить, что из-за хитрой универсальности и поддержки различных единиц измерений это выполняется куда более сложной командой:

•  Shape.CellsSRC(visSectionObject, visRowLine, visLineWeight).Result(visPoints) = 0.24

   Нетривиально, мне кажется. По крайней мере без макросов пришлось бы несколько дней читать справку и MSDN.



   Вот такой вот загадочный язык Visual Basic.
 
dog

О пользе дефрагментации

Питер Нортон     
   Ояебундестаг, мои электронные френды.

   Сегодня мы поговорим о такой проблеме как дефрагментация диска.

   Казалось бы, времена DOS и Norton Utilites безвозвратно ушли в прошлое. А сам Питер Нортон - человек, который впервые популярно объяснил читателю как пользоваться системным int 21h - вовремя сбагрил свою фирму, ушёл от дел и превратился в мецената и коллекционера.
 

   К слову сказать, Питеру Нортону первому пришла в голову поистине гениальная идея двухпанельного файлового менеджера, которую он и воплотил в Norton Commander'е.

   Реализация, правда, подкачала и к 5-й версии NC стал довольно монстроидальной вещью. Вот скажите, нафига в файловом менеджере нужен был графический курсор и анимированные разворачивающиеся окна?

   На мой взгляд, непревзойдённо крутой реализацией гениальной идеи Нортона был Volkov Commander. Написан он был на ассемблере, и при той же функциональности работал быстрее, и занимал в памяти менее 64 кБ.



   Но всё это - дела давно минувших дней, а наш разговор пойдёт сейчас о дефрагментации.

   Все вы, конечно, привыкли к тому, что чем дольше используешь компьютер - тем больше:

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

   Одна из причин тормозов компьютера - высокая степень фрагментации файлов на диске. И чем дольше вы работаете без форматирования - тем на более мелкие части дробятся ваши файлы, тем дольше времени требуется системе для доступа к ним.

   Как вы думаете, во сколько раз медленнее может копироваться файл, если он фрагментирован? В полтора раза? В два? В три?

   Сегодня я лично убедился: фрагментированный файл копируется в десять(!) раз медленнее.



   Итак, проводим натурный эксперимент. Мы имеем: RAID 10 из четырёх SATA-шных винтов. Максимальная скорости чтения и записи файлов с такого RAID-а равна удвоенной скорости работы одного жёсткого диска, то есть около 120 * 2 = 240 Мбайт/с.

   А ещё мы имеем файл, размером 600 Мб, который при копировании показывает скорость.. 25 Мбайт/с. То есть, в 10 раз меньше рабочей. При копировании создаётся впечатление, что это не скоростной RAID, а внешний usb-винт!

6.01 КБ


   Расширенный статус RAID-контроллера говорит нам, что с дисками и температурой всё в порядке, ошибок чтения и записи не встречалось. В чём же тогда может быть дело? Варианта два:

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

   Начнём с более простого варианта, и посмотрим, что нам говорит сам Windows о фрагментации диска:

4.76 КБ


   "Всё хорошо, прекрасная маркиза!"  Диск D:, на котором расположен файл фрагментирован всего на 5%. Какая красота!

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

   Вообще, политика интерфейсов Microsoft заключается в том, что пользователь априори идиот. К чему нагружать его мозг какими-то файлами и картинками? Да ещё эти картинки как-то рисовать?!

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



   Но не стоит сразу верить тому, что говорят вам продукты Microsoft.

   Вот в этой статье в разделе "Особенности дефрагментации NTFS" очень хорошо описаны недостатки стандартного API Microsoft по дефрагментации дисков. И не взирая на то, что статья датирована 2000 годом, можно смело утверждать, что эта проблема до сих сопутствует всем замечательным продуктам этой известной компании.

   Вот тут-то и пришло время вспомнить про нортоновские утилиты. И хотя они до сих пор выпускаются фирмой Symantec, есть более современный и что здорово - совершенно Freewar-ный продукт, который к тому же поддерживает наш Windows 2008 Server. Итак, знакомьтесь:

•  Auslogic Disk Defrag: http://www.auslogics.com/ru/software/disk-defrag/

   Запустив его, и проанализировав несистемный диск D: мы видим клиническую картину: 85% диска фрагментировано. Круто, да? Это вам не Microsoft.

13.24 КБ


   Внимательно освоившись в программе, находим ответ, почему наш файл так медленно копировался. Оказывается, exp_AR_24.rsw побит на 3180 фрагментов. Кластеры, содержащие этот файл условно обозначены на диаграмме ярко-красным цветом:

14.60 КБ




   Запускаем процесс дефрагментации и оптимизации. Дефрагментация располагает данные таким образом, чтобы каждый файл содержал минимальное число фрагментов. Оптимизация - объединяем всё свободное место в один большой фрагмент дискового пространства.

   Для нашего RAID-массива эта операция длилась около 24 часов. Хорошо, что использование утилиты Auslogic Disk Defrag позволяет в произвольном месте приостанавливать и прерывать процесс дефрагментации.

   После того, как утилита завершила свою работу, видим следующую картину:

10.02 КБ


   Но как дефрагментация повлияла на скорость копирования файлов? А вот так:

6.08 КБ


   Скорость стала выше ровно в 10 раз. Если бы сам не убедился - никогда бы не поверил.



    Какие выводы можно сделать из этой статьи?

•  Во-первых, за 15 лет ничего не поменялось. Утилиты сторонних производителей, зачастую Freeware, по-прежнему справляются с системными действиями гораздо лучше, и выполняют их гораздо качественнее - чем штатное программное обеспечение фирмы Microsoft.

•  А во-вторых, если ваш комп безбожно тормозит - сделайте дефрагментацию, это помогает.
 
forward

Современные программы

   Еб@#ый стыд!

   Глядя на современное программное обеспечение, я понимаю, что только массовые расстрелы разработчиков ПО спасут наши с вами компьютеры!

   Да, вы угадали - я снова решил переустановить систему, теперь правда на домашнем компе. Итак, что мы имеем:



   1. На чистейшем компе с только-что установленным софтом уже отъедено 600 Мб памяти. Выясняем, кто больше всех жрёт, оказывается... драйвер видеокарты!

   Ёбаный стыд! А ведь когда-то давным давно, когда компы были медленные а программисты умные, драйвера писались на ассемблере! А сейчас драйвера херачат все кому не лень - прямо на том, на чём умеют. Под мою видюху наверное писали на Visual Basic-е под .NET. Чем ещё объяснить, что этот "драйвер" отжирает 160 Мб памяти - я не знаю.

9.75 КБ



   2. Конечно же, я заранее надеялся на ребят из Microsoft. И ребята из Microsoft'а не подвели. Их замечательный .NET framework 3.5 не хочет ставиться на машину, не имеющую прямого доступа к Интернет ни под каким соусом.

   Даже скачав .NET Framework 3.5 Service Pack 1 (Full Package), который весит 250 Мб, и в теории должен включать в себя ПОЛНЫЙ ПАКЕТ - он всё равно захотело лесть в интернет и пытаться что-то оттуда скачать. Нахуя??!

   И что самое обидное - скачать ничего у него так и не получается: окошко "восстановление связи с сервером" может висеть бесконечно - не смотря на то, что прокси в Internet Explorerе у меня настроен и все сайты прекрасно открываются.

   Вообщем, плюнул я на версию 3.5 , и поставил .NET framework 2.0 отсюда.

6.93 КБ



   Но первое место моей досады на этот раз заслужили отечественные разработчики - команда DrWeb. Мало того, что его системный процесс жрёт 80 Мб, в отличии от куда более полезного и менее прожорливого Total Commander'а (8 Мб) - так ещё и багов полный огород.

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

   Запускаю обновление DrWeb - а оно не запускается. То есть, вообще никакой реакции на команду не поступает.. Я пробую и так, и этак - хоть бы что! Ну, думаю, наверное вирус какой заблокировал. Проверяю - всё чисто. Запускаю обновление - тишина.

   Через час я сообразил, что всё это время процесс обновления был уже запущен, но висел и не отвечал - из-за того, что не мог соединиться с сервером. А не мог - потому что лез мимо прокси. Drwebupw.exe висит, и делает десяток попыток соединения с сервером с таймаутом в 5 минут каждая. И пока процесс не отстрелишь - DrWeb упорно игнорирует любые команды обновления.

   Посмотрел логи, с неприятным удивлением обнаружил что антивирус не обновлялся уже четыре дня. Запустил морду - не работает. Посмотрел настройки - стоит "Брать настройки прокси из Internet Explorer'a". Запустил IE - оттуда всё работает и открывается.

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

   С горя создал, как сейчас модно говорить, "трабл-тикет" на "саппорте". Посмотрим, когда "заакцептят".

24.35 КБ




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

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

   А вы давайте, продолжайте писать GUI-шные программы под винду на .NET или на Java - потому что вам так удобнее. Когда кругом будут одни неучи, мы будем дороже цениться.

 
ethology

Творчество как процесс выражения эмоций

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

   Творческим личностям вообще хорошо живётся: есть во что вкладываться. Главное - чтобы это было востребовано и приносило свой небольшой гешефт.

   А вот ремесленникам живётся плохо. Потому что ремесло - это знания, навыки, алгоритмы - всё что угодно кроме фантазии. И выложить своё настроение в ремесле невозможно.



   Вот, к примеру, поэт Горбушка из "Республики ШКИД" так выразил своё осеннее настроение стихами:
Мне стало все жальше и жальше
Смотреть из пустого окна.
Умчаться бы куда подальше,
Где новая светит земля.

не совсем в рифму, конечно, но настроение передано очень хорошо.

   А как может выразить своё осеннее настроение сантехник Вася? Ну разве что обматерит вас, когда будет в очередной раз ремонтировать трубы.

   Программистам в этом отношении живётся тоже не фонтан, и шансов выразить свои эмоции в результате своего труда нет никаких. Программа она или работает как задумано, или нет. Вы когда-нибудь видели злую программу? Или осенне-грустную? Или зажигательно-весёлую?

   Это такое же ремесло, как скажем, изготовление корпусной мебели, или экономическое прогнозирование. Хоть ты тресни - а прямоугольного куска ДСП шкаф по-другому не распилишь. А "креатив в бухгалтерской отчётности" - это вообще сюрр.



   Можно бы долго ещё рассуждать о том, как плохо живётся ремесленникам, и как хорошо жить тем, чья работа связана с творчеством. Но давайте посмотрим в корень:

•  Почему человеку требуется как-то выражать свои эмоции?
•  Зачем? Для чего?
•  Какой от этого толк?
 
ethology

Человек с точки зрения программиста

   Что мы сейчас имеем:

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

   Это как байтики на языке ассемблера: когда ты смотришь на дизассемблированную программу, ты не видишь в ней никаких классов, объектов, иерархии наследования - ничего высокоруровнего. Только mov, jmp и ret, да регистры процессора крутятся, и ничего больше. И что удивительно - всего этого набора примитивных низкоуровневых команд оказывается достаточно для реализации шикарного пользовательского интерфейса и написания высокоинтеллектуальных программ.

   Человек на этом уровне рассматривается как физический объект.

   Язык программирования: Asm

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

   Перед нами Windows API. Мы понимаем, почему окошко программы становится белым и не прорисовывается - когда она долго что-то считает. Мы знаем, что нужно сделать, чтобы такого не происходило. Мы знаем, как легко разместить кнопку с текстом, и представляем насколько тяжело прорисовывать кнопку с картинкой. Мы знаем, как с помощью всего одной команды свернуть окно программы в трей, но сделать красивый grid с фильтрацией по колонкам - выше наших возможностей. Мы смутно догадываемся о том, что все наши вызовы функций API транслируются компилятором всё в те же mov, jmp и ret, но только jmp всё чаще попадает на область памяти системных библиотек.

   Человек рассматривается как животное.

   Язык программирования: C

•  Экзистенциальная психология - дополняет картину бытия, постулируя особенности сознания человека. Утверждает, что каждый человек: смертен, свободен, одинок и обделён смыслом существования. Озвучивая эти, казалось бы, очевидные из текущего эмпирического опыта человечества тезисы - тем самым оголяет самые болезненные и самые распространённые раны человеческой психики.

   Мы видим набор объектов, их свойств и методов. Для нас ничего не стоит создать кнопку с картинкой, и мы не будем задумываться, какими пикселями и когда она будет отрисовываться. Нам достаточно дважды щёлкнуть мышкой, чтобы добавить к программе навороченный grid или плавающую панель инструментов. Мы легко подгружаем на неё значки из ближайшего графического редактора. Мы оперируем красивыми объектами, с множеством свойств и методов - но там, внизу, под ними - всё те же функции API, а ещё ниже - те же команды процессора. С внедрением объектной модели появился новый уровень понимания и моделирования системы, стало проще оперировать агрегированными понятиями - но внутренний её механизм работы остался тем же.

   Человек рассматривается как человек.

   Языки программирования: C++, C#, Java



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

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

Мои сотовые телефоны (с 2002 года)

Samsung SGH-R210  (май 2002 — декабрь 2003)
 
   

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

Ericsson R520m  (январь 2004 — декабрь 2004)
 
   

   Концептуальный аппарат для Большого человека. Не смотря на габариты, он абсолютно плоский и легкий, его никогда не приходилось выковыривать из кармана. Позиционировался как влагостойкий ударопрочный телефон. В каких только передрягах он со мной не участвовал, сколько раз на асфальт падал. Не смотря на дешевизну модели в ней был GPRS, IrDA и даже POP3-клиент.
 
   Отказался включаться через 11 месяцев и 2 недели после покупки. Нечеловеческими усилиями возвращён по гарантии за свою первоначальную стоимость. Если честно, я до сих пор считаю его габариты и вес - оптимальными для сотового телефона.
 

Sagem myX-6  (январь 2005 — ...
 
   

   Куплен вместо сдохшего R520m. Просто хороший телефон, Весьма продвинутый на момент покупки. Долгое время выполнял также функцию GPRS-моедема, оставаясь для меня единственным способом связи с внешним миром из дома.
 
   В сентябре 2005 отдан жене, до сих пор(!) работает
 

Sagem myX6-2  (сентябрь 2005 — сентябрь 2007)
 
   

   Куплен в качестве апгрейда myX6. Бесконечно радует Java J2ME-2 в связке с GPRS и цветным дисплеем 176 x 220. Раньше я думал, что телефон нужен "чтобы звонил". Теперь я не представляю, что бы я делал без Opera Mini и MidpSSH. Сисадмины поймут - ssh через сотовый телефон для руления Unix-серверами - это мечта джедая! А Opera позволяет замечательно коротать время в дороге.
 
   Прослужил верой и правдой два года, потом стал зависать и разряжаться за один день. Замена аккумулятора помогла, но не сильно. Отдан тестю, у которого сдох окончательно.
 

Nokia 8910i  (декабрь 2006 — март 2007)
 
   

   Мой первый служебный телефон. Иммиджевая модель финской сборки. Корпус с титановым напылением (а не целиком титановый, как пишут некоторые обзоры). Мне достался "в наследство" от технического директора. Кроме внешних понтов, внутренняя начинка телефона приносит полное разочарование. Экран - 4 строки, максимальная длина сообщений в записной книжке - мизерная (меньше 100 символов). А уж о pop3 клиенте, как в R520m и говорить не приходится.
 
   Не знаю, зачем этому аппарату титановый корпус, но мне он достался настолько убитым, что микрофон включался строго в каждом втором разговоре. Валяется в столе, не рабочий.
 

Siemens A52  (апрель 2007 — август 2007)
 
   

   Второй мой служебный телефон, достался тоже б/у. Благодаря нему я понял, что "хвалёное немецкое качество" - уже давно не то, а siemens - не мой выбор (и не выбор истории, как оказалось позже). Если с нокией можно было ещё хоть как-то мириться, то данный аппарат вёл себя хаотично: хотел работал, хотел зависал, хотел выключался и перегружался. А интерфейс - это было нечто: настолько неинтуитивного интерфейса у сотовых телефонов я ещё не видел!
 
   После стопятнадцатой самопроизвольной перезагрузки выброшен на помойку.
 

SonyEricsson K550i  (сентябрь 2007 — январь 2009)
 
   

   Замечательный телефон. Несмотря на продвинутость, ни разу не зависал, звонки всегда проходили идеально. Как известно, у сонериков телефоны делятся на две линейки: "фотоаппараты" и "плееры". Это был фотоаппарат, и какой! Камера свои 1,3 МП отрабатывала полностью, а фотографии с него вы постоянно встречали в моём журнале. Светодиодная вспышка-фонарик тоже не раз пригождалась.
 
   Служил верой и правдой полтора года, пока не был окончательно разбит очередным падением на бетонный пол. Потекла матрица.
 

SonyEricsson K320i  (сентябрь 2007 — ...
 
   

   Покупался по принципу "самый дешёвый телефон с заданным набором функций". От него требовалось: поддерживать bluetooth-гарнитуру, уметь работать gprs-модемом, уметь лазить в интернете через Opera mini. При цене на момент покупки около ~3.500 руб телефон все эти функции выполнял на твёрдую пятёрку. Камера, конечно слабая (0,3МП) и главный недостаток - без защитной шторки.
 
   Покупался одновременно с K550i, но пережил его, хотя падал приблизительно столько же. Пластиковый корпус принимал удары на себя, трескался, скалывался, но телефон оставался цел. 



 
dog

MS-DOS 6.22



   via nimraen @ 76_82


Аж прослезилсо!

•  простейший, написанный на ассемблере Volcov Commander
•  Norton Commander 5-й версии, уже дико навороченный
•  Dos Navigator - отечественная разработка
•  знаменитый "Лексикон" - текстовый редактор
•  MultiEdit - его зарубежный аналог
•  Norton Utilites - помните такие?
•  а до них ещё были PcTools
•  Turbo Basic - он умел даже компилировать!
•  Borland Pascal 7.0 на 10 дискетах
•  Telemax - чтобы лазить по bbs-кам
•  TMail, GoldEd - та самая ФИДОшка!

   Старые, добрые времена! А игры, игры-то какие были!

•  Принц Персии - это легенда!
•  Конечно же Packman!
•  Supaplex - уже круче пэкмана, использовал даже sound blaster.
•  Цивилизация - о, это могло занять на все каникулы!
•  Duke Nukem - тогда ещё абсолютно 2D
•  Wolfenstein - первая трёхмерная игрушка

   Вот здесь можно скачать старинные игрушки и эмуляторы к ним: http://www.dosgames.ru
   А отсюда - разнообразный системный софт тех времён: http://www.fdd5-25.net
 
ethology

Зоопсихологам

   А вот интересно, почему:

•   одни кошки любят, когда их гладят, сами лезут, ластятся, спят на коленях у человека, дико прутся и мурлыкают, когда их гладят.

•  А другие - не даются даже в руки, частенько кусаются, ласку если и терпят - то исключительно в надёжно зафиксированном положении, зыркая по сторонам и ища возможность, куда бы свалить.

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

   От чего это зависит:

•  наследственность?
•  случайность?
•  травмы в котячьем детстве?

   Почему получаются такие разные животные?
   Может ли кошка изменить свою манеру поведения в течении жизни?
   Как гарантировано определить по котёнку, к какой из категорий он относится?
 
dog

Задачка

   Сегодня товарищ загадал мне интересную задачку на программирование. А я, как известно, обожаю задачки на программирование! И вовсе не потому, что математику я всю уже забыл, а физику никогда толком не знал. ;))

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



   Вообщем, вот условие:

•  Дан скалярный массив из, например, 10.000 элементов.
•  Нужно обеспечить перебор всех элементов массива - произвольным случайным образом. Но так, чтобы каждый элемент встретился в переборе только один раз.

   И прежде чем вы начнёте её решать, одно примечание: В задаче критично время перебора - то есть выбирать элементы надо как можно быстрее.



   Жду ваших решений в коментах.. ;)