Category: it

Category was added automatically. Read all entries about "it".

ethology

Про жёлтые шнурки

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

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

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

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



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

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

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

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

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

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

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

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

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

Задачка

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

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



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

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

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



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

Оценка человека

   Есть ещё один интересный вопрос - это вопрос качественной оценки человека. Сейчас я попробую сформулировать сложившееся собственное мнение по данному вопросу, а вы дополните / поправите.



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

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

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



   Второй источник информации о человеке - это слова. Речь. Всё равно: речь устная или письменная, или это вообще буковки на экране. Это вербальные признаки. "...еть - не мешки ворочать" - говорит нам русская пословица, и вновь оказывается права: вербальную речь очень легко сымитировать, подстроившись под запрашиваемый образ.

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

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

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

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



   Ну и третий, пожалуй, самый главный источник информации о человеке - это его дела. "По делам твоим буду судить тебя" - говорит, на этот раз Библия. Дела - это самый объективный источник информации о человеке из всех доступных нам. Видя то, что человек делает, и как он это делает - мы можем получить наиболее правильное представление о нём.

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

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

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

   Можно сколько угодно говорить - но ни разу не сделать. Можно молча делать, и не говорить об этом. Только по делам человека мы сможем попытаться наиболее объективно понять, кто он такой. Не "Как он выглядит?", и не "Кем он себя считает?", а "Кто он есть на самом деле?"



   И вот когда вы уже знаете, "Кто он есть на самом деле?" - вот после этого и общение в радость, и интересно знать "Кем он себя считает?", и для вас уже совершенно не важно "Как он выглядит."

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

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

   Так что если уж приходится судить людей - старайтесь делать это по делам, но уж никак не по словам, или по внешнему виду. И помните: "Всяк человек ложь" (Пс.115, ст.2)
 
dog

Бесплатный / коммерческий софт

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

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

•  GIMP - бесплатного графического редактора наподобие фотошопа
•  Adobe Acrobat Reader'а - тоже, вообщем-то, бесплатной программы для чтения pdf - правда, разработанной очень даже коммерческой компанией adobe

   Но больше всего меня удивил размер этих дистрибутивов:

•  GIMP - 16 Мбайт
•  Acrobat Reader - 24(!!!) Мбайт

   Я не могу понять, как программа, которая тупо показывает на экране pdf-файлы - может весить в 1.5 раза больше навороченного графического редактора с кучей фильтров и спецэффектов?



   Но самое интересное было, когда я увидел, сколько весит уже установленный Acrobat Reader, а именно папка C:\Program Files\Adobe\Reader 8.0

   Угадайте, сколько, она может весить?... Сдаётесь?... 190 МБайт!!!!
190 Мбайт!! Программа для просмотра pdf!

   А теперь, давайте посмотрим на состав папки, чтобы афигеть окончательно:

8,59 КБ


   Итак, сам акробат весит 80 Мбайт, а ещё 105 Мбайт занимает... его распакованный установочный комплект!!!

9,90 КБ


   Объясните мне одно: насколько надо не уважать пользователя, чтобы без его согласия, по умолчанию запихивать ему в Program files ещё одну копию своего дистрибутива, да ещё и распакованную, которая весит в 4 раза больше исходного?!



   Теперь понятно, что фирме adobe совершенно наплевать на пользователя, её абсолютно не беспокоит его место диске.

•  Во-первых, молча размещать дистрибутивы в Program files - это свинство.

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

•  А в-третьих, ещё большее свинство - выкладывать распакованный 100 МБайтный дистрибутив, когда можно было выложить запакованный 24 МБайтный.

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

   У нас на глазах "пухли", превраясь из быстрых и шустрых программ в невообразимых по-размеру и тормознутости монстров ACDSee и Nero. А чего только стоит Windows Vista, не приносящая никакой полезной функциональности, зато требующая 2 Гб памяти для нормальной работы?

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

•  CD Burner XP - намного удобнее Nero
•  FastStone Image Viewer - намного быстрее ACDSee

   И что удивительно, обе программы с прекрасным русским интерфейсом.

 
dog

Про программистов

   Все наверняка знают золотое правило: если программист называет какой-то срок, то можете смело умножать его на два. (только не вздумайте говорить об этом программисту, а то умножать придётся на четыре ;)

   Как вы думаете, что делают программисты, когда проект "горит", но в самый последний момент заказчик переносит срок сдачи на неделю дальше? Думаете, они садятся и начинают обстоятельно всё доделывать, чтобы успеть к новому сроку? Как бы не так:

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



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

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

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

•  Вторая группа - это программисты, которые пьют со вкусом. Пьют они, вообщем-то, всё, что горит - но предпочтение отдают 40-градусным напиткам: водке или горилке, и пиву - когда жарко. Хотя, от коньяка тоже не отказываются. Соки не признают и считают лишней тратой денег (разве что в качестве запивки ;)

   Работают столь же эффективно и напористо, как пьют. Способны программировать даже в совершенно пьяном виде, причём на утро окажется, что написанная после вечеринки программа работает, и даже отчасти правильно.



   Я насчитал среди своих знакомых программистов примерно поровну - и одной и другой категории. А к какой из них вы бы отнесли себя?
 
dog

Восстановление разделов Linux (ext2fs)

   Давайте я вам расскажу, как быть - если на Linux'е у вас слетели партиции.

   Не дай Бог никому - в один ужасный момент вы нажимаете кнопку power - а система не грузится. Не грузится, потому что её нет. Потому что на винте нет вообще ни одного раздела. WTF? - спросите вы сами себя. Остается только развести руками - и пытаться восстановить данные. Ваше счастье, если винт оказался цел физически.

   Вероятность того, что вся информация затёрта чем-то другим - довольно мала (если, конечно, кто-то не постарался и не "помог" вам). Скорее всего сбой прошел в отдельных секторах диска. И от того, на какую часть файловой системы придутся эти сектора - и зависят дальнейшие обстоятельства.

   На днях мне приволокли винт из-под Linux Mandrake с файловой системой ext2fs. Ни Linux, ни XP не нашли на нём никаких разделов. Задача стояла следующая - выцепить максимально большую часть информации, которая на нём сохранилась. В поисках оптимального решения, я перебрал довольно много различных утилит, и пришёл к выводу, что следующий способ работы со слетевшим Linux'ом является оптимальным:

   0. Делаем резервную копию (образ) всего диска любой попавашейся под руки утилитой (например PowerQuest Drive Image, Acronis True Image или бесплатный Partition Logic).



   1. Анализируем, что осталось от разделов диска. Если в FAT/FAT32 всегда можно было выполнить полное сканирование поверхности диска (с помощью той же Easy Recovery) и восстановить файлы без имен, но хотя бы по цепочкам кластеров, то в EXT2FS эти цепочки имеют древовидную структуру, корень которой лежит в таблице inodes.

   Сделать это можно с помощью замечательной (и, самое главное, абсолютно бесплатной) утилитой R-Linux из вполне платного пакета R-Studio.

Плюсы R-Linux Минусы R-Linux
•  Возможность восстанавливать удаленные файлы на живых разделах •  Невозможность трансляции русских имён файлов, если они в Koi-8 или тем более в Unicode
•  Режим полного сканирования диска - когда программа ищет таблицы inodes, и позволяет идентифицировать раздел диска, даже если загрузочный сектор и описание раздела затёрты. •  Программа умеет сохранять данные на другой диск, но неумеет восстанавливать MBR и описание разделов.
•  Встроенный просмотрщик физического содержимого данного файла, сектора, записи inode. В шестнадцатеричном и в текстовом видах.  


   В моем случае программа нашла около 200 заголовков inodes, из которых реальными оказались две - соответствующие двум исчезнувшим разделам диска.



   2. Исправляем диск. Почему бы не сохранить файлы с помощью R-Studio - спросите Вы? Очень просто: R-Studio не может транслировать имена файлов, в результате чего русские названия выглядят как рВХЫФВ - (если ext2fs была создана на Koi8), или как РЭРбРсСаРдРв (если была задействована UTF8).

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

   Поэтому единственное, найденное мной решение - это попытаться восстановить таблицу разделов прямо на живом диске, чтобы потом его можно было смонтировать в том же Linux'е или в XP. Для этого воспользуемся великолепной (и снова абсолютно бесплатной) программой TestDisk. Она предназначена для восстановления Linux-разделов и имеет версии для кучи ОС (dos, win, linux, mac).

   Не пугайтесь её консольного интерфейса - версия под Windows на отлично справилась со своей задачей. Главное - нужно было зайти в расширенный режим, было выбрать нужные разделы и указать их тип (Primary). После чего программа восстанавливает убитый mbr и таблицу разделов диска.

   R-Linux удобна тем, что можно всё посмотреть, пощупать, попробовать и так - и этак. TestDisk - лучше, когда уже принято решение, как и что восстанавливать.



   3. Переписываем данные. Ну вот мы и дошли до последнего этапа. Хорошо, когда у вас есть под рукой Unix-система, и вы можите примонтировать к ней восстановленный винт. А что делать, если такой системы нет? Придётся монтировать к XP.

   Два наиболее распространенных драйвера для подключения разделов ext2fs к Windows - это EXT2IFS и EXT2FSD. Заметьте: оба драйвера бесплатные.

   Хваленая в интернете программа Paragon Ext2FS Anywere за которую просят 300-900 руб - использует тот же самый драйвер Ext2Fsd. Видимо paragon'овцы решили по-быстрому срубить деньжат за графический интерфейс к этому драйверу.

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

   И когда я почти отчаялся вытащить файлы из-под винды, я нашёл замечательную программу Explore2FS - бетта-версия 1.08 которой.. поддерживает Unicode! И хотя она не монтирует винт на прямую, в ней можно выделить нужные файлы/каталоги - и указать, куда их сохранить.



   Вот вкратце, и вся история восстановления информации с разделов Ext2FS.

   На само восстановление ушло две ночи. Первую ночь я искал разделы, и боролся с юникодом, а вторую - боролся с юникодом и переписывал файлы. Не забудьте, что на *nix-системах обычно имеется множество мелких файлов, переписывание которых с ext2fs на ntfs может занять довольно длительное время (до нескольких часов).

   В заключении, вот вам ссылки на очень хорошие статьи, прочитав которые вы станете суровым Linux-гуру. Вы будете настолько суровым, что сможете:
•  вручную редактировать содержимое загрузочного сектора и таблиц inodes шестнадцатеричным diskeditor'ом
•  без всяких конверторов, налету читать русский текст в кодировках Koi8 и Unicode.

     Статьи:
  •  Логическая структура жесткого диска: http://www.opennet.ru/base/dev/hdd_struct.txt.html
  •  Восстановление случайно стертых разделов жесткого диска в Linux: http://www.opennet.ru/base/sys/linux_partition_crash.txt.html
  •  Восстановление удаленных файлов с файловой системы Ext2fs в Linux (Aaron Crane): http://www.linux.org.ru/books/HOWTO/Ext2fs-Undeletion.html
  •  Восстановление удаленных файлов под Linux (Крис Касперски): http://www.insidepro.com/kk/103/103r.shtml

  •  Юникод: http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4
  •  Кирилица в Юникоде: http://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0_%D0%B2_%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B5

 
dog

2:5036/32

Boss,2:5036/32
Point,1,DeaDLove_System,Lipetsk,Stas_Kornienko,-Unpublished-,9600,XX,MO,V32B,V4
Point,2,Boocho_System,Lipetsk,Misha_Bugakov,-Unpublished-,9600,XX,MO,V32B,V42B
Point,3,Spliter,Lipetsk,Oleg_Ponomaryov,-Unpublished-,9600,V42B,MO
Point,4,CaesaR,Lipetsk,Igor_kHodarin,-Unpublished-,9600,V42b,MO
Point,5,Razorblade_Station,Lipetsk,Oleg_Kunov,-Unpublished-,9600,MO,V32B,V42B
Point,6,Chetverikov_Sasha,Lipetsk,Sasha_Chetverikov,-Unpublished-,9600,XX,MO,V3
Point,7,The_Fursov_Brothers,Lipetsk,Alexei_Fursov,-Unpublished-,9600,XX,MO,V32B
Point,9,Kolobok,Lipetsk,Dmitry_Ezhov,-Unpublished-,9600,XX,MO,V32B,V34
Point,10,Home,Lipetsk,Natalia_Shulgina,-Unpublished-,9600,XX,MO,V32B,V42B
Point,11,NoName,Lipetsk,Alexander_Nemtsov,-Unpublished-,9600,V42B,MO
Point,12,PSY_System,Lipetsk,Anatoly_Naumov,-Unpublished-,9600,XX,MO,V32B,V42B
Point,13,Owlet_C++_Systems,Lipetsk,Yaroslav_Kulikov,-Unpublished-,9600,XX,MO,V3
Point,14,home_station,Lipetsk,Dmitry_Kudoyarov,-Unpublished-,9600,V32B,V42B,V34
Point,15,Home,Lipetsk,Misha_Kochetygov,-Unpublished-,9600,V42B,MO
Point,16,LiarSystem,Lipetsk,Vadim_Kunov,-Unpublished-,9600,MO,V32B,V42B
Point,17,Crazy_Comp,Lipetsk,Kuligin_Alexey,-Unpublished-,9600,V42B,MO
Point,19,ScorpHome,Lipetsk,Sergej_Olimpiev,-Unpublished-,9600,V42B,MO
Point,20,Durdom_Kolokolchik,Lipetsk,Natalia_Sinukova,-Unpublished-,9600,XX,MO,V
Point,21,Stas_Home,Lipetsk,Stas_Polessky,-Unpublished-,9600,XX,MO,V32B,V34
Point,22,JAM,Lipetsk,Eugeny_Varshavsky,-Unpublished-,9600,XX,MO,V32B,V34
Point,23,Home,Lipetsk,Yury_Opolev,-Unpublished-,9600,XX,MO,V32B,V34
Point,24,BLooDY_TECHNOLOGYS,Lipetsk,Oleg_Kostikov,-Unpublished-,9600,XX,MO,V32B
Point,25,KDV_Station,Lipetsk,Dmitry_Kostuchenko,-Unpublished-,9600,V32B,V42B,XX
Point,26,Home_Station,Lipetsk,Andrey_Kulakov,-Unpublished-,9600,V32B,V42B,XX,MO
Point,27,Crazy_Computers_Systems,Lipetsk,Alex_Zubkovsky,-Unpublished-,9600,XX,V
Point,28,Fox,Lipetsk,Sergey_Suhareff,-Unpublished-,9600,XX,V32B,V34
Point,29,Children_of_UnderGround,Lipetsk,Oleg_Ivanov,-Unpublished-,9600,V32B,V4
Point,30,Home_Station,Lipetsk,Oxana_Polessky,-Unpublished-,9600,XX,MO,V32B,V34
Point,31,home,Lipetsk,Pavel_Retunskiy,-Unpublished-,9600,XX,MO,V32B,V34
Point,33,DarkWolf,Lipetsk,Basil_Dergunov,-Unpublished-,9600,XX,MO,V32B,V34
Point,34,Burzhum,Lipetsk,Sockor_Mikhail,-Unpublished-,9600,XX,MO,V32B,V34
Point,35,Paranoya,Lipetsk,Daniil_Ulyanov,-Unpublished-,9600,XX,MO,V32B,V34
Point,40,Home,Lipetsk,Natasha_Voronina,-Unpublished-,9600,XX,MO,V32B
Point,70,home,Lipetsk,Ekaterina Karpacheva,-Unpublished-,9600,XX,MO,V32B,V34

  •  1 - это ваш любимый аффтар.
  •  2 - Миша Бугаков - мой самый старый и верный друг. Недавно я пыталсо приобщить его к ЖЖ, но получилось только вот так: boocho
  •  3 - Олег Пономарев - весьма харизматическая личность, босс /41 ноды. Нагрубил декану, и ушел служить в вооруженные силы. После этого мы с ним так и не пересеклись :-(
  •  4 - Игорь Ходарин - в настоящее время работает программистом на кондитерской фабрике "Ликонф". Иногда вижу его в местных nntp-конференциях.
  •  5 - Конечно же это unlightened! Автоматизатор учета больных и приёма поц-ыентов. Благодаря его гостеприимству, мы всегда можем побухать на свежем воздухе!
  •  6 - Саша Четвериков - друг Мишки. Погиб в 2002 году. Вечная ему память.
  •  9 - Дима Ежов - знаменитый ди-джей, лучший гость всех дискотек и вечеринок: dj_sonic. Меня всегда восхищают его неиссякаемая энергия и позитив!
  •  10 - Моя жена, да.
  •  11 - Саша Немцов. Прикладной математик, программист. Иногда пересекаемся в городе. Кажется, работал на НЛМК.
  •  13 - Ярослав Куликов, или просто Ярик. Последнее, что я про него знаю, это что он преподавал в Пединституте и вел несколько интернет-проектов.
  •  15 - Миша Кочетыгов. Когда еще не было Бивиса и Баттхеда, от Михаила можно было услышать весь набор их выражений, позже ставших крылатыми. Кстати, одно время он с unlightened репетировал группу "Deeppeacedull Boys".
  •  16 - Вадим Кунов. aylulu. Ничего не пишет, а всё что написал - стёр. По степени Дао переплюнул своего брата. ;-)
  •  17 - Алексей Кулигин - хороший друг /41. Несколько раз пересекались в городе. Сейчас обзавелся семьей и ребенком.
  •  19 - Сергей Олимпиев - еще одна одиознейшая личность местного Фидо. Это, пожалуй, самый активный спорщик и критик. На настоящий момент успел жениться и развестись!
  •  20 - Наталья Синюкова - "Дурдом-Колокольчик". Скольких поинтов вдохновляла на подвиги эта особа? Сколько копий было сломано из-за неё на поинтовках! Интересно, где она теперь?
  •  21 - Стас Полесский - наш одногрупник, замечательный товарищ, отличающийся неискоренимым оптимизмом! Кажется, сейчас работает где-то на ТЭЦ. С удовольствием бы встретил его!
  •  23 - Юра Ополев - тоже наш одногруппник. Периодически мы с ним встречаемся, потому что живем в одном районе. Весьма начитанный товарищ.
  •  29 - Олег Иванов - прикладной математик, и весьма продвинутый программист. Последний раз виделись в институте.
  •  30 - Оксана - сестра Стаса Полесского. Кстати, довольно регулярно писала в конференции, не в пример некоторым поинтам.
  •  32 - Василий Дергунов aka bl_technician. В настоящее время топчет ногами пейс-чаные земли своей солнечной истогической Родины! Хотя еще пару недель назад мы с ним пили пиво.
  •  33 - Михаил Сокор, он же sockor - весьма творческая личность. Профессионально увлекается музыкой, и еще кое-чем. ;) Замечательный барабанщик.

   Кого не вспомнил - пишите :)
 
dog

Perl

Программировал на perl'е. Великолепный язык! От удовольствия, едва не испытал оргазм - сублимация, хуле..

•  Простейший пример: надо разбить строку, содержащую ФИО на три переменных: фамилию, имя отчество. При этом между словами может быть несколько пробелов.

$fio =~ /^(\S+)\s+(\S+)\s+(\S+)/;
$fam = $1;   $nam = $2;   $otch = $3;


•  Ещё пример: имеется строка в формате "........,CN=****,####". Из неё надо извлечь значения **** и хвост строки.

$str =~ /[Cc][Nn]\=([^\,]+)\,(.+)$/;
$str1 = $1;   $str2 = $2;


•  А может быть вам нужно заменить все числа в строке на заданное, например на 17234? Нет ничего проще:
$text =~ s/[\d\.]+/17234/g;


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

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



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

   Прошлый пример с ФИО можно записать еще короче:
($fam, $nam, $otch) = split ( /\s/, $fio);


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

$Fruits{'Миша'} = 'Яблоко';
$Fruits{'Петя'} = 'Груша';
$Fruits{Таня'} = 'Банан';
foreach $friend (keys %Fruits)
{ print 'У '.$friend.' в кармане '.$Fruits{$friend}; }


   При этом (в отличии от того же Бэйсика) конструкция абсолютно строгая: keys %Хэш возвращает массив, содержащий ключи хэша. А foreach - аналогичная циклу for конструкция, перебирающая значения заданного массива.

   Заметьте, мне не пришлось ни явно определять переменную-хэш, ни задавать её размерность. Как только интерпретатор встретил выражение $Fruits{'Петя'}, он сам создал новую переменную. Как только исполнение программы уйдёт за её зону видимости - переменная будет удалена.

   В то же время, в Object Pascal или C++ никакой хэш не мыслим без создания объектов, вызова конструктора и методов, переопределения операторов. А самое противное - не забыть вовремя высвободить память из-под объекта.



   Конечно никто не будет писать на perl'е драйвера устройств. Но для обработки текстовой информации, и для быстрого скриптового программирования - язык сверхудобный!
 
dog

1С:Предприятие - 8.1 vs 7.7

   Меня часто спрашивают: где я беру такую траву?  чем с точки зрения программиста, 1С 8.0 отличается от 1С 7.7?  Отвечаю: с точки зрения программиста, 1С 8.0 гораздо продуманее, удобнее и концептуальнее.



•  Чего стоит только возможность групповой разработки конфигурации - одновременной работы нескольких программистов над одной конфигурацией!

•  При этом сохраняется история версий каждого объекта - как в лучших системах cvs. А также полностью исключаются конфликты при одновременной модификации одного и того же объекта.

•  Наконец-то появилось то, чего так не хватало при программировании в 7.7 - всплывающих списков методов и свойств текущего объекта, как в Delphi или Builder'е.

•  Прекрасный редактор форм, полностью избавил нас от "слоёв". Теперь создавать "закладки" так же легко как во всех средах визуальной разработки.

•  У объектов на форме появились события - аналогично events в Delphi.

•  Неслабо радуют стандартные отчеты. Теперь аналитику можно разворачивать не только по субконто - но и по любому реквизиту этого субконто. Например, оборотно-сальдовую ведомость по 01 счету можно развернуть по материально-ответственным лицам.



   Язык программирования 7.7 и 8.0 остался практически тем же самым. Но зато очень сильно изменился набор объектов. В сильно лучшую сторону! И сейчас вы поймёте почему.

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

Реализация 1С 7.7

Спр = СоздатьОбъект (
"Справочник.ТралиВали" );
Спр.Выбрать();
Пока Спр.Получить() Цикл

   // Так написать нельзя:
   // ---------------------------

   Спр.Реквизит = Значение;
   Спр.Записать();
   // ---------------------------

   // Надо писать вот так:
   // ---------------------------

   Спр2 = СоздатьОбъект(
"Справочник.ТралиВали" );
   Спр2.НайтиПоКоду( Спр.Код );
   Спр2.Реквизит = Значение;
   Спр2.Записать();
   // ---------------------------

КонецЦикла;



   Это "подводный камень", с которым сталкивается каждый начинающий 1с-ник. Если объект типа "Справочник" участвует в выборке - его нельзя использовать для модификации реквизитов выбранных элементов.

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

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

   Самое противное, что в первом случае система не выдает никаких сообщений об ошибках. Просто после первого вызова метода Записать(), выборка закрывается и перестает работать - как будто в ней не осталось больше объектов.
   
Реализация 1С 8.0

Выб = Справочники.ТралиВали.Выбрать();
Пока Выб.Следующий() Цикл

   Спр = Выб.ПолучитьОбъект();
   Спр.Реквизит = Значение;
   Спр.Записать();

КонецЦикла;



   Задача решена в несколько раз элегантнее, согласитесь!

•  А всё потому, что метод Выбрать() возвращает объект типа "СправочникВыборка" - который может использоваться только для перебора элементов справочника.

•  А метод ПолучитьОбъект() возвращает объект типа "СправочникОбъект" - который как раз и используется для модификации данных.

•  Кроме того нет даже самой процедуры СоздатьОбъект(). Служебная переменная Справочники всегда возвращает коллекцию типа "СправочникиМенеджер". А с указанием через точку имени конкретного справочника (кстати, используя выпадающий список-подсказку) - мы получаем объект "СправочникМенеджер".

   По-моему очень красивое и правильное решение!

   Теперь ставится очевидным, почему нельзя было изменять реквизиты элементов справочника после открытия выборки. На самом деле, подобное деление на объекты существовало ещё в 7-ке, но оно было скрыто от разработчика и приносило больше проблем, чем пользы.



•  Ещё в 8-ке есть объектный тип "СправочникСсылка" - именно он и использовался в большинстве случаев в 7-ке. Сейчас он нужен, когда требуется записать ссылку на элемент справочника - в реквизит другого объекта.

•  А ещё есть тип "СправочникСписок" - он используется для представления списка элементов справочника в виде списочного поля на форме.


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

   Кстати, у нас уже 1С:Предприятие 8.1. В нём, например, можно вносить несущественные изменения в конфигурацию (без реорганизации метаданных) - на лету, не выгоняя пользователей из базы данных. А у вас?