• Авторизация


О духовном развитии 23-08-2013 07:19


Всё таки дон Хуан был прав... Нет никакого духовного развития Я поясню. Под духовным развитием наш ум понимает альтернативу физическому. Нас так учили в школе и мы так думаем. Для физического развития мы качаем мускулы, а для духовного качаем дух. А т.к. дух мы себе очень плохо представляем, то нередко его подменяет ум. Получается что духовное развитие - это теоретическое развитие. Такое понимание, иногда открытое, иногда зарытое в глубинах подсознания, очень привлекательно для ленивой природы хумансов: "Живу, значит духовно развиваюсь посредством своих мыслеформ. Накапливаю опыт."

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

Предлагается перестать себя обманывать, называя нечто духовным развитием. Его нет. Есть просто развитие, которое предполагает всю необходимую работу.
комментарии: 0 понравилось! вверх^ к полной версии
Многострочные литералы в Java 6 10-06-2013 17:29


Через анотации:
http://www.adrianwalker.org/2011/12/java-multiline-string.html
Можно забацать анотацию в классе и запихнуть туда многострочный текст. Потом этот текст можно читать через попу.
Теперь я могу устроить революцию и свергнуть Spring!

А вот тут есть ещё один восхитительный хак:
http://blog.efftinge.de/2008/10/multi-line-string-literals-in-java.html
http://stackoverflow.com/questions/878573/java-multiline-string


// From:
// http://blog.efftinge.de/2008/10/multi-line-string-literals-in-java.html
// Takes a comment (/**/) and turns everything inside the comment to a string
// that is returned from S()
public static String S()
{
StackTraceElement element = new RuntimeException().getStackTrace()[1];
String name = element.getClassName().replace('.', '/') + ".java";
StringBuilder sb = new StringBuilder();
String line = null;
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream in = classLoader.getResourceAsStream(name);
String s = convertStreamToString(in, element.getLineNumber());
return s.substring(s.indexOf("/*") + 2, s.indexOf("*/"));
}

// From http://www.kodejava.org/examples/266.html
private static String convertStreamToString(InputStream is, int lineNum)
{
/*
* To convert the InputStream to String we use the BufferedReader.readLine()
* method. We iterate until the BufferedReader return null which means
* there's no more data to read. Each line will appended to a StringBuilder
* and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();

String line = null;
int i = 1;
try
{
while ((line = reader.readLine()) != null)
{
if (i++ >= lineNum)
{
sb.append(line + "\n");
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}

return sb.toString();
}

public static void main(String[] args) throws Exception
{
String s = S(/*
Wow, we finally have
multiline strings in
Java! HOOO!
*/);
System.out.println(s);
}
комментарии: 0 понравилось! вверх^ к полной версии

Концептуальные проблемы ООП 10-05-2013 00:35


Проблема в том, что поведение объекта может зависеть от его внутреннего состояния. Да, это проблема! Приведу парочку примеров на Java о том, что я имею в виду.

Вот пример хорошего класса, поведение которого относительно независимо от состояния объекта:


class Simple
{
  private int a = 0;

  public void add(int b)
  {
    a = a + b;
  }

  public int getA()
  {
    return a;
  }
}


Здесь метод "add" работает одинаково независимо от значения свойства "a". А вот пример похожего класса, где метод "add" ведёт себя более изощрённо, ориентируясь на значение "a".


class Difficult
{
  private int a = 0;

  public void add(int b)
  {
    if ((float)(a % 100) / 3 == (int)((a % 100) / 3) )
      a = a + b;
    else
      a = a - b;
  }

  public int getA()
  {
    return a;
  }
}


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

Вот другой пример на языке AS3:


class D
{
  var param1: boolean;
  var param2: boolean;

  function func1(...)
  {
    .........
      if (param2)
        param1 = abc;
      else
        param1 = xyz;
    .........
  }

  function func2(...)
  {
    .........
    if (param1 && asd)
      param2 = ...;
    ...........
  }
}


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

Вот такое наблюдение. Что с этим делать пока не знаю. Пойду ещё почитаю Фаулера.
комментарии: 4 понравилось! вверх^ к полной версии
Linux: как вычленить только PID процесса через ps 09-05-2013 16:46


Допустим мы ищем процесс содержащий в своём названии строку "org.stl.optimus.MainWorkThread". Тогда вычленить его PID можно так:
ps -aef | grep -v grep | grep 'org.stl.optimus.MainWorkThread' | awk '{print $2}'
Также этот PID можно присвоить какой-нибудь переменной:
MYPID=`ps -aef | grep -v grep | grep 'org.stl.optimus.MainWorkThread' | awk '{print $2}'`
комментарии: 0 понравилось! вверх^ к полной версии
Ещё одна полезность TODO списков и бумаги вообще 07-04-2013 04:18


[380x239]
Открыл для себя ещё одну сторону TODO списков. TODO списки на бумаге очень помогают! Когда в процессе работы возникают мелкие задачки типа: "проверить работу вот этой функции", можно записать это в TODO список и больше не хранить задачу в голове. Это реально очищает мозг! Такая практика позволяет мне концентрироваться на текущей задаче полностью и с удовольтствием. При этом не упускать ничего из виду.
комментарии: 0 понравилось! вверх^ к полной версии
Linux: Настройка UPS с помощью nut 30-01-2013 23:20


Настройка nut в debian описана здесь.
После выполнения этой настройки надо внимательно просмотреть файл upsmon.conf и подправить в нём параметры для автоматического отключения компьютера.

Компьютер начнёт выключаться после получения сигнала LOW_BATTERY от бесперебойника. Если нужно чтобы он отключался пораньше, то критический процент зарядки батареи UPS можно переопределить в файле ups.conf с помощью директивы override.battery.charge.low. Значение задаётся в процентах.

Точно также можно переопределить время в минутах, через которое выключится сам бесперебойник, после того как инициирует выключение компьютера. Это делается директивой override.ups.delay.shutdown.

Вот мой бесперебойник в файле ups.conf:
[ups]
driver = usbhid-ups
port = auto
desc = "BackUPS 525"
override.ups.delay.shutdown = 1
override.battery.charge.low = 75

Эти директивы могут отличаться для разных моделей бесперебойников, посмотреть их можно в статусе UPS:
# upsc ups@127.0.0.1

Кроме того эти значения можно переопределить с помощью команды upsrw:
# upsrw -s battery.charge.low=75 -u root -p ваш_пароль ups@127.0.0.1

Для SVEN Pro бесперебойников нужно использовать драйвер blazer_usb в ups.conf. Подробнее о настройке бесперебойников SVEN Pro можно почитать в этой статье. С моим конфигом тоже всё работает.
Другие опции протокола megatec (SVEN) можно посмотреть здесь.
комментарии: 0 понравилось! вверх^ к полной версии
Linux: как поставить новый firefox в старом Debian Squeeze 29-01-2013 17:48


Вот тут написано как это сделать: http://lucasmanual.com/blog/?p=94

Добавляем репозитории в файл /etc/apt/source.list:

# deb http://backports.debian.org/debian-backports squeeze-backports main
# deb http://mozilla.debian.net/ squeeze-backports iceweasel-release

Эта строчка исправляет ошибку NO_PUPLIC_KEY:
# apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver subkeys.pgp.net --recv $key && sudo gpg --export --armor $key | apt-key add -; done

Проверяем ещё раз всё ли добавилось в репозитории:
# apt-get update

Затем:
# apt-get install -t squeeze-backports iceweasel

Готово.
комментарии: 0 понравилось! вверх^ к полной версии
Linux: восстановление данных с dd-образа рэйда 25-01-2013 22:48


Итак, есть архивированный образ устройства с программным raid 1: sda_dd.img.gz Требуется получить доступ к файлам и востановить raid массив.

Распаковываем образ:
# gzip -d sda_dd.img.gz
Получаем файл sda_dd.img.

Полезные советы на эту тему монтирования таких образов можно почитать по этой ссылке. Тут очень удобно воспользоваться утилитой kpartx. Она есть в дистрибутиве debian и скорее всего во многих других. Она сканирует образ устройства и ищет там разделы, которые затем превращает в loop-устройства. Очень удобная вещь. Далее привожу лог команд, с помощью которых я монтрировал образ raid массива. Строчки, начинающиеся с символа "#" - это вводимые команды, остальное - вывод этих команд.

# kpartx -a -v sda_dd.img
add map loop0p1 (253:0): 0 31367156 linear /dev/loop0 2048
# fdisk -l
Disk /dev/mapper/loop0p1: 16.1 GB, 16059983872 bytes
255 heads, 63 sectors/track, 1952 cylinders, total 31367156 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/loop0p1 doesn't contain a valid partition table
# mdadm -E /dev/mapper/loop0p1
/dev/mapper/loop0p1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 765e8e0f:2fea0fb1:2b982958:682bb83d
Name : u8:0
Creation Time : Wed Jan 23 21:05:09 2013
Raid Level : raid1
Raid Devices : 2

Avail Dev Size : 31350772 (14.95 GiB 16.05 GB)
Array Size : 15658880 (14.93 GiB 16.03 GB)
Used Dev Size : 31317760 (14.93 GiB 16.03 GB)
Data Offset : 16384 sectors
Super Offset : 8 sectors
State : clean
Device UUID : e163517f:9c20fa0d:0af0532f:0499ba00

Update Time : Fri Jan 25 20:21:33 2013
Checksum : 92c0e9f7 - correct
Events : 45


Device Role : Active device 0
Array State : AA ('A' == active, '.' == missing)

# mdadm --create --verbose /dev/md0 --assume-clean --level=raid1 --raid-devices=2 --spare-devices=0 /dev/mapper/loop0p1 missing
mdadm: /dev/mapper/loop0p1 appears to be part of a raid array:
level=raid1 devices=2 ctime=Wed Jan 23 21:05:09 2013
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 15675264K
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 dm-0[0]
15675264 blocks super 1.2 [2/1] [U_]

unused devices:
# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Jan 25 22:27:42 2013
Raid Level : raid1
Array Size : 15675264 (14.95 GiB 16.05 GB)
Used Dev Size : 15675264 (14.95 GiB 16.05 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent

Update Time : Fri Jan 25 22:27:42 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0

Name : r2:0 (local to host r2)
UUID : 9df83c9f:f0267ad5:b00aca3c:c239bf6f
Events : 0

Number Major Minor RaidDevice State
0 253 0 0 active sync /dev/dm-0
1 0 0 1 removed
# mkdir /mnt/md0
# mount /dev/md0 /mnt/md0


В итоге имеем в папке /mnt/md0 примонтированную файловую систему raid массива. Если всё в порядке, можно записывать файл sda_dd.img на диск и снова создавать raid 1 с имеющимися данными.
комментарии: 0 понравилось! вверх^ к полной версии
Linux: бэкап через dd на удалённую машину 25-01-2013 19:51


Бэкап всего диска, включая свободное пространство на удаленную машину через ssh можно сделать так:
# dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c | ssh -c blowfish user@hostname "dd of=hda.img.gz bs=64k"
Она также сожмёт данные в формат gzip.

Источник: http://mydebianblog.blogspot.ru/2008/03/dd.html
комментарии: 0 понравилось! вверх^ к полной версии
Linux: как указать пароль для ssh заранее без ключей 25-01-2013 18:52


Указать пароль, который потребует ввести командный интерпретатор можно и заранее:
# echo '123456' | ssh root@192.168.1.85 -o password_stdin
Но если командный интерпретатор спросит что-то вроде yes/no, в случае, если мы коннектимся к ssh-хосту впервые, то такая команда не прокатит.
Точно также можно монтировать что-то по sshfs:
# echo '123456' | sshfs root@192.168.1.85:/ /mnt/myhost -o password_stdin

Источник: http://leolik.blogspot.ru/2008/11/sshfs.html
комментарии: 0 понравилось! вверх^ к полной версии
Linux: блочное устройство из файла 25-01-2013 15:58


Сделать из файла блочное устройство можно так.

Файл размером 256 Мб, заполненный нулями
# dd if=/dev/zero of=/var/lib/drbd/meta_disk bs=1M count=256

Создать блочное loop устройство
# losetup /dev/loop0 /var/lib/drbd/meta_disk

На нем так же можно создать файловую систему
# mke2fs -j /dev/loop0

Можно и подмонтировать
# mount /dev/loop0 /mnt/loop0

Источник: http://blog.zavolga.net/tech/virtual_block_device.html
комментарии: 0 понравилось! вверх^ к полной версии
Linux: установка Oracle JDK 6-7 в Ubuntu 12.04 и Debian 24-01-2013 21:05


Ещё одна ссылка в блокнотик: http://habrahabr.ru/post/143113/
Там описаны разные простые способы установки Oracle JDK 7 в Ubuntu 12.04.
Самым простым способом мне показался такой.

Добавляем новый репозиторий:
# add-apt-repository ppa:upubuntu-com/java

Эта строчка исправляет ошибку NO_PUPLIC_KEY:
# apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver subkeys.pgp.net --recv $key && sudo gpg --export --armor $key | apt-key add -; done

Проверяем ещё раз всё ли добавилось в репозитории:
# apt-get update

Ставим пакет с JDK 7:
# apt-get install oracle-java7-installer

Установка Sun JDK 7 в Debian
комментарии: 0 понравилось! вверх^ к полной версии
Linux: загрузка с корнем на RAID 21-01-2013 15:07


Загрузка Linux с корнем на RAID:
http://habrahabr.ru/post/133059/
Пригодится.

Если рэйд из флешек, то их надо низкоуровнево форматировать с помощью dd if=/dev/zero bs=4096 of=/dev/sdX, иначе grub не захочет на них ставится после создания raid. Кроме того, надо делать mdadm —zero-superblock /dev/sdX каждой флешке независимо от форматирования перед созданием raid. Всё это можно сделать в alternate установщике любого дистрибутива, нажав Alt+F2.
комментарии: 0 понравилось! вверх^ к полной версии
Мелочи: установка Windows 7 с флешки 15-01-2013 20:43


В качестве блокнота:
http://misterkim.org/articles/installing-windows7-from-usb.html
Установка винды с флешки. Если коротко, то надо использовать Windows7-USB-DVD-tool.
Иногда прога Microsoft для записи винды на флешку тупит и говорит что флешка используется другой программой. Флешку надо форматировать в FAT32, чтобы такого не было. Кроме того прога Microsoft'а умеет записывать только дистрибутивы Windows 7 и 8. Windows XP она не записывает. Ещё одна важная деталь: флешка для этой проги должна быть отформатированна в винде под FAT32. Иначе будет выдавать сообщения о том что устройство уже кем-то используется и занято - это не правда. Если дистрибутив винды не в iso, а в каком-то другом формате (например, mds), то надо его смонтировать и тупо создать iso образ из набора файлов. Это можно сделать программами UltraISO или ImageBurn или любыми другими.

Есть ещё одна странная приблуда, называется WinToFlash. Она умеет записывать на флешку Windows XP.

А вот так предлагается делать загрузочную флешку под DOS: http://tro.net.ua/item/%D1%81%D0%BE%D0%B7%D0%B4%D0...%D0%BB%D0%B5%D1%88%D0%BA%D0%B8
Затем на неё можно скопировать необходимые досовские программы вроде mhdd... Там сразу загружается VolkovCommander, так что пользоваться легко.

Примерно таким же образом можно записывать на флешки Linux дистрибутивы:
http://warenek.ru/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D...D0%BB%D0%B5%D1%88%D0%BA%D0%B8/
Программы для записи: UltraISO, Unetbootin, Image Writerz (win32 Disk Imager).
комментарии: 0 понравилось! вверх^ к полной версии
Последняя битва на Земле 25-12-2012 02:31


Что будет завтра? Мы не знаем что будет завтра в нашей жизни. Мы даже не уверены в том, что будет в следующую минуту. Это всё "лирика" и мало кого волнует. Однако, если завтра нас ожидает важное событие, то мы начинаем волноваться о его исходе. Быть или не быть? Получится или нет? Да или нет? От этого зависит всё.
Я хочу понять как относится к этой неизвестности - как спасти себя от страха? То, что произойдёт завтра решать не нам. Это сделает кто-то другой и наступит неизбежность, которая может повернуться как лицом, так и ботинком. Можно ли доверять этой устрашающей и непостижимой внешней силе, надеясь на лучшее? Ведь такое доверие неизбежности может спасти от страха. Типа, Бог/Дух/Великая_река_силы обо мне позаботится, поэтому всё будет хорошо. А что если не будет? Что если нам подсунут новое испытание, которое станет настоящим кошмаром? И этот кошмар необходимо пройти для входа на "новый уровень"?
Не надо бояться. Не будет кошмара, если мы его не нагнетаем, думая в этом ключе о предстоящем событии. Не надо индульгировать на страхе - это не приносит ничего, кроме самого страха и проблем. Надо жить здесь и сейчас, потому что только безупречность идёт в счёт. Всё что делаем в текущий момент - это наша битва на этой Земле, которая может оказаться "последней" в контексте предстоящего события. Событие ассоциируется со смертью. Например, смертью какого-то начинания, смертью отношений, смертью нашего мировоззрения. Важно понять в прикладном аспекте, что вот это дело последнее, что происходит, раз мы переживаем предстоящий момент, ровняя его со смертью. А раз так, то сейчас происходит последняя битва и она происходит не зря. Возможно, мы живём ради вот таких "последних битв", которые идут каждый миг нашей жизни. И от того КАК мы их проведём действительно зависит всё.

Суть приёма в том, что "безупречность" или "последняя битва" являются не просто абстрактной идеей, а конкретным практическим состоянием, в которое мы можем легко перейти. Последняя битва - это практическое действие, которое происходит прямо сейчас, в том случае, если мы делаем его хорошо. В виде действия безупречность является альтернативой страху, потому что страх - это действие "бояться". Мы боимся, потому что у нас нет никакой альтернативы тому, что делать с переживанием. Мы больше ничего не умеем! Легко что-то приобрести, но трудно отказаться. Такова природа людей! И мы приобретаем страх. Чтобы отказаться от страха, надо взять что-то другое. А для этого это другое надо наработать. Состояние последней битвы в безупречном виде должно стать наработанной привычкой, защитным механизмом, который мы можем включить перед лицом страха. Это козырь, который нужно засунуть в рукав и научиться быстро его вытаскивать! Мгновение и мы уже в другом состоянии - в состоянии последней битвы на Земле, потому что только она идёт в счёт.
комментарии: 0 понравилось! вверх^ к полной версии
Конец света для админа 21-12-2012 05:11


Не в качестве жалобы. Просто констатация факта. Всё началось с того, что перестала работать сеть на балконе. После многочасовых выяснений причины оказалось, что кабель до того промёрз, что обломился. Протянуть новый кабель на мой балкон сложно, но я это сделал.
После этого появилось ещё 2 никак не связанные проблемы: 1.) у меня не крутится вентилятор видюхи из-за мороза; 2.) сервер на балконе ни с того ни с сего перестал отвечать. После долгих выяснений оказалось что сервер на балконе не грузится по неизвестным причинам, возможно проблема с винчестером. Это самое фиговое что могло произойти, ибо на нём вся работа. Мне пришлось вытащить этот компьютер с балкона. Пока вытаскивал его повредил другие кабели и в итоге пришлось наводить капитальный порядок во всём серверном шкафу. Ладно.
Хотелось разобраться с сервером, однако было уже поздно и шуметь нельзя. Поэтому я решил обновить запасной сервер в коридоре и перенести работу туда. Я начал обновление и спустя несколько часов дошёл до точки невозврата, где нужно загружаться с новым ядром. Однако это был осознанный риск. Так или иначе, сервер не захотел с ним работать - не загрузился. В итоге последний домашний сервер я тоже сломал.
Итог: все серверы сломаны, рабочие данные недоступны, печать парализована, сеть частично повреждена, возможность играть также под вопросом. Ну и ладно, зато я жив и у меня есть интернет. Возьму и буду ставить свежие версии - гулять так гулять! Так админы встречают конец света. 8-)
комментарии: 3 понравилось! вверх^ к полной версии
Делаю перчатки с подогревом 18-12-2012 20:56


Вот первый прототип :) Работает!
[700x466]
комментарии: 0 понравилось! вверх^ к полной версии
Как сохранить связь с Потоком? 17-12-2012 22:35


Наконец-то я нашёл ответ на свой вопрос: "Как не потерять удовольствие от работы?"
Есть ещё один способ. Это должно хобби, которое однозначно "включает", причем мгновенно и при любых обстоятельствах. Для меня это кунг-фу :D Перебирать разные движения в потоке поединка - это настоящее удовольствие! Тоже самое вы можете почувствовать в танце или другом занятии. Главное чтобы ваше хобби позволяло выходить на Поток быстро, в течение буквально нескольких минут.
Зачем нужно такое хобби в нашей жизни? Это нужно тем людям, у кого при обычной работе не всегда можно легко выйти на Поток. В этом блоге я уже много раз писал какие проблемы могут быть с выходом на Поток нашей обычной работе. Если выйти на Поток получается редко, нас может настигнуть творческий кризис и, соответственно, неудовольствие от жизни. Чтобы не стать жертвой творческого кризиса нужно быстро включающее хобби. Тогда мы вспоминаем свой Поток и осознаем себя как творческие люди.
Всё очень просто! :) Вот так: http://video.yandex.ru/users/eugene20237/view/23/#hq
комментарии: 0 понравилось! вверх^ к полной версии
Запекание текстур плагином 3dmax Flatrion 27-11-2012 03:19


Я нуб в этом деле, но приходится запекать текстуры и импортировать модели из 3dmax. Пишу эту заметку чисто для себя, чтобы запомнить некоторые особенности работы с Flatrion и не наломать дров снова.

Я накладываю на модель комбинированный материал, состоящий из нескольких других материалов, затем каждой грани назначаю идентификатор нужного материала и модель текстурируется так как мне надо. При запекании такой модели в плагине Flatrion нельзя использовать тот же канал текстуры (Target Channel), с которым были использованы исходные материалы. Обычно это канал 1. Иначе итоговая текстура запекается неправильно. Если установить любой другой Target Channel, то всё нормально, но при экспорте будут использованы всё равно координаты из канала 1. Поэтому я сделал "ход конём":
1. Установил Texture Stretch в значение 0.3, а Gutter Padding 16. Параметр Overlap (ниже) установил в значение 8. Advansed Unwrap Setting оставил по умолчанию (все галочки сняты).
2. Установил Target Channel в значение 1.
3. Нажал кнопку Apply Unwrap Modifiers.
4. Экспортировал модель в Collada (DAE), сняв галочку Bake Matrices.
5. Установил Target Channel в значение 2.
6. Нажал кнопку Apply Unwrap Modifiers.
7. Target Map Slot не трогал. Текстура никуда не назначается.
8. Установил галочку Make Self-Illuminating.
9. Add shell установил в значение Overrite.
10. Нажал Select Bake Element и выбрал Blend Map. В группе Bake Element Settings снял галочку Reflection. В случае Complete Map получается какая-то фигня.
11. Shell Switcher = (Baked, Baked) и Shell Resolver = Keed Baked.
12. Выбрал файл, куда будет рендерится текстура.
13. Нажал кнопку Bake Selected и увидел запечённую текстуру в своем файле.

В итоге всё экспортировалось и запеклось правильно!
комментарии: 0 понравилось! вверх^ к полной версии
Среда для ИИ 05-09-2012 01:37


Всё сводится к вопросу: а в какой среде должен обучаться ИИ? А этот вопрос автоматически порождает другой: а что мы вообще хотим от ИИ в итоге? Если мы хотим получить бота в компьютерной игре, то обучать его нужно соответственно в виртуальном мире этой игры. Если мы хотим разговорного собеседника, то обучать такого монстра придётся в мире, идентичном нашему или очень похожему на наш. Отсюда понятно зачем на самом деле нужна Матрица, где бегает Морфиус - чтобы обучать Смитов!

Что же мы можем сделать? Либо создавать большой виртуальный мир с социальными отношениями, смоделированными чувствами и прочим-прочим, либо сделать нечто совершенно иное и вырастить ИИ для решения узкоспециализированной задачи. Я вот подумал, что хорошо бы сделать робота, который будет писать программы вместо меня Для этого можно создать виртуальный мир в котором живёт язык программирования, а именно его виртуальная машина. Скорее всего язык придется изобретать свой, чтобы впихнуть ИИ в его концепции. Т.е. задача пока чисто академическая. Но в случае успеха, уверяю вас, мы будем уже грезить о Скайнете и будущем с терминаторами, потому что оно приблизится.

[650x155]
комментарии: 1 понравилось! вверх^ к полной версии