Недавно возникла задача сгенерить словарь слов заданной длинны из заданного алфавита. Понятно где такое может пригодиться ;) Я не считаю себя сильным в алгаритмах, но эта задача мне понравилась. Очень интересно послушать ваш фидбек. Где что можно улучшить, ускорить, украсить, упростить… Вобщем пишите коменты.
module Brute
def dict(word_size, alphabet)
alphabet = alphabet.split('') unless alphabet.is_a?(Array)
first = (alphabet[1] + alphabet[0] * word_size).alpha_to_i(alphabet)
last = (alphabet[1] + alphabet[-1] * word_size).alpha_to_i(alphabet)
(first..last).collect{ |n| n.to_alpha(alphabet)[1..-1] }
end
module_function :dict
end
class Fixnum
def to_alpha(alphabet)
alphabet = alphabet.split('') unless alphabet.is_a?(Array)
self.to_s(alphabet.size).split('').collect{ |n| alphabet[n.to_i] }.join
end
end
class String
def alpha_to_i(alphabet)
alphabet = alphabet.split('') unless alphabet.is_a?(Array)
self.strip.split('').collect { |c| alphabet.index(c) }.join.to_i(alphabet.size)
end
end
Репозиторий: http://github.com/antono/brute
Код скоро опубликую в виде гема.
Очень впечатлен. Если кто не видел:
Читаю:
Добавил в подписки и список LEARNTO:
Пройдет еще 2 года и можно будет уверенно заявить что Flash ненужен.
Все активные убунтоводы Минска общаются на предмет организации Release Party по слючаю релиза Ubuntu Karmic Koala.
Общение происходит в официальной рассылке Belarus LoCo Team.
Организовано голосование за дату проведения мероприятия.
Заведен гуглдок со списком участников. Можно добавляться.
Подпишитесь на рассылку если хотите активно поучаствовать в подготовке.. Там сейчас наибольшая движуха.
Встретимся там :)
Бывает откроеш в vim что-нибудь из /etc/, внесеш правки а потом не можеш сохранить… Бывает же, да? :)
cmap w!! %!sudo tee > /dev/null %
Добавте строчку в ~/.vimrc и делайте :w!! чтобы сохранить с sudo :)
Empathy научили поддерживать MessageStyles от Adium и голос/видео.
Состряпал по этому случаю скриптик для установки стилей от Adium:
#!/bin/sh
# Adium theme AdiumMessageStyle installer for Empathy
# Last version here: http://gist.github.com/191499
if [ -z $1 ]
then
echo
echo " Usage:"
echo " `basename $0` adiumxtra://some.url.here/extra"
echo
exit 1
else
TMPDIR=`mktemp --directory`
XTRAURL=`echo $1 | sed -e "s/^adiumxtra:/http:/"`
DEST="$HOME/.local/share/adium/message-styles/"
if [ !-d $DEST ]
then
mkdir -v -p $DEST
fi
cd $TMPDIR
echo "Downloding extra..."
wget --no-verbose --progress=bar:force -O xtra.zip $XTRAURL
unzip -qq xtra.zip
THEMES=`ls -d *.AdiumMessageStyle/`
if [ -z $THEMES ]
then
echo "No themes found in downloaded file"
else
for theme in $THEMES
do
cp -r $theme $DEST
done
echo "\nTheme $XTRAURL was succesfully installed to $DEST"
fi
rm xtra.zip
rm -r $TMPDIR
fi
exit 0
Попробовал его добавлять в Firefox примерно так:
/* Installer for Empathy themes from adiumxtra:// urls */
pref("network.protocol-handler.app.adiumxtra","/usr/local/bin/adiumxtra-install");
pref("network.protocol-handler.warn-external.adiumxtra",false);
Что-то безуспешно. В about:config обработчик виден. На файловой системе тоже есть а FF все равно ругается что не назначен. Если решите проблему - черканите в коменты :)
PS:
gconftool-2 -t string -s /desktop/gnome/url-handlers/adiumxtra/command "/usr/loca/bin/adiumxtra-install %s"
gconftool-2 -t bool -s /desktop/gnome/url-handlers/adiumxtra/enabled true
gconftool-2 -t bool -s /desktop/gnome/url-handlers/adiumxtra/needs_terminal false
Так можно включить для Chromium. Firefox, Epiphany и Midori обучить так не удалось.
Пакетирование ruby 1.9.1 уже в процессе. Если вам не терпится попробовать новшества - собирайте пакет самостоятельно.
Ставим нужные зависимости:
sudo aptitude install debhelper cdbs dpatch \
patch autoconf m4 bison binutils libgdbm-dev \
libncurses5-dev libreadline5-dev tcl8.4-dev \
tk8.4-dev zlib1g-dev libssl-dev procps
Собираем пакеты:
sudo atitude install devscripts build-essential
mkdir /tmp/ruby191 && cd /tmp/ruby191
dget https://launchpad.net/ubuntu/karmic/+source/ruby1.9.1/1.9.1.243-0ubuntu1/+files/ruby1.9.1_1.9.1.243-0ubuntu1.dsc
dpkg-source -x ruby1.9.1_1.9.1.243-0ubuntu1.dsc
cd ruby1.9.1-1.9.1.243 && debuild
cd .. && sudo dpkg -i *.deb
Тем, кто уже тестирует Ubuntu on Rails PPA специальный бонус:
sudo aptitude install ruby1.9.1 ri1.9.1 rdoc1.9.1
и далее по необходимости…