Just another Zexro tape

Спасти рядовых козявочек

Опубликовано в рубрике funny by levi on Февраль 4th, 2008

Полдня играл в миниклиповскую игрушку Scribble. По способности выдумывать затейливую живность разработчики не уступают самому Босху: тут и козявочки (на самом деле это кляксы), которых нужно провести через весь уровень, умудрившись не сжечь и не убить падением со слишком большой высоты, и ходячие груши, и коровы (?) взрывающиеся от приступа клаустрофобии и т.д., и т.п. Управление будто пришло из керлинга: точно так же требуется подправлять движение предметов (козявочек или врагов) и точно так же процесс выглядит совершенно не тривиальным.

Рекомендую.

Помечено:,

Спасибо Фромму

Опубликовано в рубрике social by levi on Январь 22nd, 2008

Неожиданно для себя узнал, что был такой психолог Эрих Фромм. Он считал, что в основе человеческих взаимодействий лежат два типа алгоритмов: «иметь» и «быть». Эти две противоположные установки универсальны настолько, что объясняют практически все, что связано с развитием личности.

Действительно, можно до посинения коллекционировать лошадиные силы, гигагерцы, дистрибутивы Linux, сертификаты MS или ученые степени, но это не будет иметь ни малейшего отношения к самореализации…

Дауншифтинг, ныне часто обсуждаемый, заключается в отказе от накопления денег и «титулов» (установка «иметь») в пользу раскрытия своего потенциала (установка «быть»)…

И даже каббалистическое «кли» (модель желания, потребности) до исправления действует по плану «иметь», после исправления — по плану «быть».

Помечено:, ,

Бубном по Active Directory

Опубликовано в рубрике admin by levi on Январь 16th, 2008

Legacy-контроллеры домена снова обрадовали неведомыми глюками. Сегодня — отказом службы репликации файлов. Нечеловеческими усилиями удалось найти рецепт, который помог. Краткое изложение оригинала:

1) выбираем контроллер, который инициирует процесс;
2) идем в HKLM\SYSTEM\CurrentControlSet\Services\NtFrs\Parameters\Backup/Restore\Process at Startup, меняем значение BurFlags на «d4».
3) грохаем содержимое C:\WINDOWS\SYSVOL\domain\NtFrs_PreExisting___See_EventLog
4) перезапускаем службу репликации («net stop ntfrs», «net start ntfrs»).

Убеждаемся, что в журнале событий отразились изменения к лучшему. Можно проверить работоспособность контроллеров с помощью dcdiag.

Помечено:,

String.format(…)

Опубликовано в рубрике programming by levi on Январь 15th, 2008

Даже в Java (точнее JDK 1.5) можно писать лаконично. Задача: получить незанятый инвентарный номер из БД и вывести его в виде строки из 8 цифр (с ведущими нулями по необходимости):


// открываем транзакцию...
Transaction ta = session.beginTransaction();

// получаем последний занятый номер
Integer lastNumber = (Integer)session.createSQLQuery
("SELECT max(inumber) FROM assets")
.list().get(0);

// ...закрываем транзакцию
ta.commit();

// вот оно! форматируем а ля sprintf
out.print(String.format("%08d",	++lastNumber));
Помечено:,

Мне бы такую способность

Опубликовано в рубрике social by levi on Январь 13th, 2008

По-азиатски деспотичный провайдер «Уралсвязьинформ» непреклонен в своем стремлении согнать клиентов с дешевого и сердитого тарифа «Турбо 64K» на не слишком оправданный для дома «Ультра 128». Сначала поднимая цену, а теперь урезая 64K до фактических 56K. И ничего ему за это не будет.

Помечено:

РПЦ, СОШ и ОПК

Опубликовано в рубрике social by levi on Январь 5th, 2008

Пока мы праздновали и бездельничали, аккурат под католическое Рождество, оказывается, случилось нехорошее:

С 1 сентября 2009 года во всех школах России будет введен предмет «Основы православной культуры», заявил глава Русской православной церкви Алексий II.

Лоббирование интересов ЗАО «РПЦ» в школе — устоявшаяся традиция. Проходили и псевдоскаутское движение, и окропление святой водой на первосентябрьских линейках. И на академиков с их открытыми письмами чихали. Впрочем, теорию Дарвина еще не заменили концепцией Разумного Замысла. Уже неплохо.

У церкви per se есть очень важная функция. Примерно та же, что у консервной банки: как можно дольше сохранять в неизменном виде то, что в нее положат. Другими словами, задача церкви — хранить тот образ жизни, образ мыслей, работоспособность которого давно подтверждена. Этот резервный lifestyle, разумеется, не самый оптимальный. Он просто проверенный. Как консервированная рыба: вариант не лучший, но приемлемый вкус гарантирован. В конце концов, запас на черный день не обязан быть свежим.

И хотя сейчас ничто не предвещает черного дня в каком бы то ни было смысле, «православный энзэ» уже достают со склада. А гендиректор Алексий обещает его развернуть. Увы.

Помечено:

Кабельный превед

Опубликовано в рубрике funny by levi on Декабрь 26th, 2007

Оператор кабельного ТВ балуется. Снято на телефон.

TV-preved

Помечено:,

Модуль аутентификации к Jetty

Опубликовано в рубрике programming by levi on Декабрь 26th, 2007

Для написания своего Login Module документация по JAAS в Jetty отправляет к соответствующим исходникам и намекает, что нужно всего лишь накодировать метод getUserInfo. Это чистая правда, но пока врубишься что к чему, Jetty наплюет не один килобайт логов с ошибками. Итак, что получилось:


package levi.ainv;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.mortbay.jetty.plus.jaas.spi.AbstractLoginModule;
import org.mortbay.jetty.plus.jaas.spi.UserInfo;
import org.mortbay.jetty.security.Credential;

public class DBLoginModule extends AbstractLoginModule {
   @Override
   public UserInfo getUserInfo(String userName) throws Exception {
       // в моем случае используется Singleton-объект Engine,
       // который хранит хэшмап с юзерами
       User user = Engine.itself().selectUser(userName);

       // на нет и суда нет
       if(user == null) {
           return null;
       }

       // заливаем роли в список
       List<String> roles = new ArrayList<String>();
       Iterator<Role> userRoles = user.getRoles().iterator();
       while(userRoles.hasNext()) {
           roles.add(userRoles.next().getName());
       }

       // ключевой момент - возвращаем имя юзера,
       // креденшл, изготовленный из простого строкового пароля, и список с ролями --
       // дальше родительский класс сам сравнит пароли и роли,
       // которые мы предоставили для заданного имени юзера и решит
       // пущать или не пущать
       return new UserInfo(userName, Credential.getCredential(user.getPassword()), roles);
   }
}

То есть, нужно из своего супер-секретного-хранилища юзерских аккаунтов, где бы оно ни было, вытащить аккаунт с заданным именем, запаковать в объект UserInfo и return его. Больше ни о чем думать не требуется.

Помечено:, ,

Кўсо живо

Опубликовано в рубрике funny by levi on Декабрь 21st, 2007

Поисковик по Unicode-символам убедительно доказал, что „устаревший“ иероглиф для японского слова «kŭso» (в перев. на англ. «shit») живее всех живых. Вуаля:

Вполне потребно им ругаться. К примеру:

— 糞! Опять netsplit!

Помечено:,

Groovy

Опубликовано в рубрике programming by levi on Декабрь 20th, 2007

Еще один язык в очереди на изучение. Скриптовая java — это страшная сила.

Помечено:,