Архив рубрики: Без рубрики

RetroShare. Описание вкладки "Друзья"

Начиная с этой статьи, мы будем рассматривать интерфейс программы более подробно. Кому-то это покажется ненужным и неинтересным, ибо сам разобрался, кому-то вообще не нужно, а кому может и пригодится.
Первую вкладку под названием «Новостная лента» я рассматривать не буду в силу ее простоты. Там всего две кнопки. Первая — «Параметры», которая запускает раздел настроек «Notify» (Всплывающих сообщений). Вторая — «Remove all», которая удаляет все сообщения в этой вкладке. Маленький совет лично от меня — отключите новые сообщения в настройках новостной ленты. После часового общения в чате найти в ленте необходимое сообщение, например, об окончании загрузки файла, становится весьма проблематичным.

Теперь мы поговорим о второй и основной по своей сути вкладке «Друзья«. Скриншот я уже выкладывал в предыдущих статьях. Выложу еще раз. Вот так она выглядит:


Поговорим о том, что есть на этой вкладке. Во-первых, это окно под названием «Друзья», в котором отображаются все ваши друзья, а так же группы. Все просто. По правой кнопке мыши на нике товарища  появляется контекстное меню:
Это меню полностью локализовано и какой-либо сложности для самостоятельного разбора и понимания не представляет.
Едем дальше. На картинке слева мы видим пару раскрывающихся списков, о которых поговорим чуть ниже, строку поиска, и, соответственно, само окно с друзьями, которых можно сортировать по имени. Теперь разберемся с выпадающими меню. 
Вот первое:
Про сортировку списка друзей говорить ничего не буду — все более чем понятно. 
В Columns  выбираем дополнительные колонки, отображаемые у друзей. Это: аватар, последний контакт и по умолчанию выбранный статус.
В  Sort by — выбираем метод сортировки списка: имя, состояние, последний контакт.
Set root is Decorated — включение украшений окна.

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

Friend Recommendations — рекомендовать друга;
Service permissions — сервисные разрешения;
Set your status message — установить статусное сообщение.

Теперь рассмотрим три вкладки в правой стороне окна. Первая вкладка «Broadcast» — это ни что иное, как общественный чат программы. Общаемся, добавляем файлы для друзей.  
Вторая вкладка «Local network«. На этой вкладке в графическом виде показано взаимодействие Вас и Ваших друзей с Вами и друг с другом. Пример:
Кнопка «Redraw» перерисовывает схему подключений. «Friendship level» — уровень дружбы. «Edge length» — длина линий.

Третья вкладка «Known people» (Известные люди) — список известных Вам людей и некоторые данные о них.
Желтым цветом выделены люди, у которых уровень доверия неизвестен. Соответственно зеленым — люди, имеющие максимальный уровень доверия. Разберем по колонкам.
С  колонкой «Имя» все понятно. Имя Вашего друга. В колонке «Did I authenticated peer» (Утверждение мною подлинности пира) показывается уровень доверия, выставленный Вами своим друзьям. Колонка «Did peer authenticated me» (Утвержденная подлинность пира для меня) — это уровень доверия, выставленный Вам вашими друзьями. В колонке «Cert Id» — выводится идентификационный номер сертификата товарища. Колонка «Last used» (последнее использование) — это время последнего использования программы.
Также присутствует поиск по имени и ID друга. Если поставить галочку напротив «Show all accesible keys» (показать все доступные ключи) — то в нижней части экрана вы увидите все доступные ключи Вас и Ваших друзей.
Если на имени друга нажать правую кнопку мыши — появится следующее контекстное меню:
— отказать другу в доступе.
— детали пира.
-копирование ссылки RetroShare.

— удаление неиспользуемых ключей (друзей)

Вот и все, что есть в этой вкладке. В следующей статье рассмотрим вкладку «File sharing» и научимся качать файлы из расшаренных папок друзей и выкладывать к общему доступу Ваши файлы и папки.

Автор: Роман Дмитриевич

Уникальное ценовое предложение на шлифовку и покраску деревянных домов и бань

[singlepic id=851 w=640 h=480 float=right] Компания Royal Wood предлагает услуги по шлифовке, грунтовке и покраске деревянных фасадов снаружи и внутри деревянных домов и бань профессиональными продуктами Tikkurila по очень выгодной цене!

Стоимость — от 25$/1м2.

За эту цену вы получаете:

— Помощь при подборе цветового решения для фасадов деревянного дома или бани от профессионального архитектора;

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

— Шлифовку деревянной поверхности стен.

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

— Защита деревянной поверхности стен с помощью нанесения грунтующего состава Pinja Oil — Tikkurila в 1 слой;

Используем Pinja Oil – пропиточный состав из профессиональной линейки Tikkurila для дерева на основе натурального масла. Защищает древесину, антисептирует и подготавливает ее для дальнейшего тонирования или окрашивания.

— Покраска деревянных фасадов с помощью нанесения на стены лессирующего антисептика Tikkurila в 2 слоя. Цвет на выбор.

Мы используем продукт Pinjasol Color – лессирующий анти-септик для наружных деревянных поверхностей. Колеруется по карте Valtti Color.

ИНТЕРЕСНО:

Фото домов, покрашенных красками и антисептиками Тиккурила ( Tikkurila)

Продукция Тиккурила с ценами,  в наличии в Минске!

Прайс- лист Тиккурила.

Другие новости:

Стильный каркасный дом площадью 130м2 для молодой семьи.

Каркасное домостроение в лучших традициях!

[gview file=»http://royalwood.by/wp-content/uploads/2013/06/Tikkurila_valtti.pdf» profile=»4″ save=»1″]

Устанавливаем ядро Linux Kernel 3.9.5 (Stable) в Linux Mint

Linux Kernel 3.9.5 является пятым техническим выпуском ядра серии 3.9, с  улучшениями и различными исправлениями ошибок. Следуйте приведенным ниже инструкциям, которые помогут вам установить новое ядро несколькими командами в терминале.

Некоторые изменения и исправления в этом последнем ядре можно посмотреть в изменения:

Установить это ядро версии 3.9.5 командами ниже, можно ​​в следующих дистрибутивах 

    Linux Mint 15/14/13

Установка ядра Linux Kernel 3.9.5

Откройте терминал, скопируйте и выполните эту последовательность команд, на свой страх и риск:


1. Переходим в папку tmp, чтобы при следующем входе в систему после установки ядра, данные пакеты были удалены автоматически:

cd /tmp 


2. Загрузка deb пакетов:


Для 32-bit (одной командой)

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.5-saucy/linux-headers-3.9.5-030905-generic_3.9.5-030905.201306071748_i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.5-saucy/linux-headers-3.9.5-030905_3.9.5-030905.201306071748_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.5-saucy/linux-image-3.9.5-030905-generic_3.9.5-030905.201306071748_i386.deb


Для 64-bit (одной командой)

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.5-saucy/linux-headers-3.9.5-030905-generic_3.9.5-030905.201306071748_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.5-saucy/linux-headers-3.9.5-030905_3.9.5-030905.201306071748_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.5-saucy/linux-image-3.9.5-030905-generic_3.9.5-030905.201306071748_amd64.deb


3. После загрузки, выполните команду на их установку в системе.

sudo dpkg -i *.deb


4. Обновите GRUB (GRUB надо обновлять в той системе Linux где он установлен, если у вас их более одной)

sudo update-grub


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

sudo reboot


После входа в систему, проверьте версию актуального ядра командой:

uname -r


Вывод должен быть следующим:

Источник: https://www.kernel.org/

Автор: Роман Дмитриевич

Антивирусные программы

Windows — такая операционная система, иммунитет которой постоянно нужно поддерживать биойогуртами.

Лучше всего иметь под рукой несколько антивирусных программ, дисков или флэшек.

Обычно у меня стоит антивирус Карсперского, триальная версия.
Существует небольшая проблема в использовании такой версии:) — сброс триала.

Как делается.

Актуально для Kaspersky Crystal

Осуществляется вводом в консоль следующий команд:

1. reg delete HKEY_LOCAL_MACHINESOFTWAREMicrosoftSystemCertificatesSPC /f
2. reg delete HKEY_LOCAL_MACHINESOFTWAREKasperskyLabLicStorage /f — для XP
reg delete HKEY_LOCAL_MACHINESOFTWAREWow6432NodeKasperskyLabLicStorage /f — для 7
3. @echo data > «%SystemDrive%Documents and SettingsAll UsersApplication DataKaspersky LabAVP9data:extended — для XP
@echo data > «%SystemDrive%ProgramDataKaspersky LabAVP9data:extended — для 7
Для новой версии Kaspersky Crystal 12.0.1.288 имеется специальная програмка:
http://yadi.sk/d/M_ei3stv3H54M

Для старой версии Kaspersky Internet Security 9.0.0.736 (2010) есть готовый батник

http://yadi.sk/d/6ZcqjQfC3H5B8
Держу его до сих для антивируса на старом домашнем компьютере.

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

Простой загрузочный диск можно сделать при поддержке Microsoft.
Windows Defender Offline — поможет удалить неудаляемые вирусы, из автозагрузки например.

Для единовременного акта зачистки можно использовать Microsoft Safety Scanner — программа скачивается на 10 дней и не конфликтует с большими антивирусами.

Автор: Sergey Bolshakov

Алгоритм Бойера — Мура

Алгоритм поиска строки Бойера — Мура считается наиболее быстрым среди алгоритмов общего назначения, предназначенных для поиска подстроки в строке. Был разработан Робертом Бойером и Джеем Муром в 1977 году. Преимущество этого алгоритма в том, что ценой некоторого количества предварительных вычислений над шаблоном (но не над строкой, в которой ведётся поиск) шаблон сравнивается с исходным текстом не во всех позициях — часть проверок пропускаются как заведомо не дающие результата.

Мы с Вами уже рассмотрели 2 подхода поиска подстроки: в лоб и Кнута — Морриса — Пратта.
И хотя последний можно отнести к правильным, сегодня мы разберем подход, являющийся классикой в решении данной задачи.
Простота, является характеристикой правильного решения и тривиальность данного подхода это подтверждает.

Основная идея алгоритм — начать поиск не с начала, а с конца подстроки. Наткнувшись на несовпадение, мы просто смещаем подстроку до самого правого вхождения данного символа.

Пример можете посмотреть в картинке заголовка 🙂

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

Для этого удобно в словарь заносить пары ключ = числовое значение символа(ord), значение = порядковый номер в подстроке.

А вот и реализация:

def bmPredCompil(x):
d = {}
lenX = len(x)
for i in xrange(len(x)):
# сколько символов с правого края до этой буквы
d[ord(x[i])] = lenX - i
return d

Осталось осуществить сам поиск со сдвигом:

def boyerMurSearch(s, x):
d = bmPredCompil(x)
# k - проход по s
# j - проход по x
# i - место начала прохода по s
lenX = i = j = k = len(x)
while j > 0 and i<=len(s):
# совпали, двигаемся дальше (от конца к началу)
if s[k-1] == x[j-1]:
k -= 1
j -= 1
# иначе, продвигаемся по строке на d и начинаем с правого конца подстроки снова
else:
i += d[ord(s[i])]
j = lenX
k = i
if j <= 0:# нашли
return k
return None # не нашли

Вот собственно и все! 🙂
Реализация, как и сама идея, достаточно прозрачна.

Автор: Pavel Petropavlov

Задача о путешествии шахматного коня

Задача о ходе коня — задача о нахождении маршрута шахматного коня, проходящего через все поля доски по одному разу.
Эта задача известна по крайней мере с XVIII века. Леонард Эйлер посвятил ей большую работу «Решение одного любопытного вопроса, который, кажется, не подчиняется никакому исследованию» (датируется 26 апреля 1757 года).


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

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

Итак, каждый ход мы будем характеризовать 3-мя числами: его порядковым номером i и парой координат x, y. История ходов будет храниться в матрице списков, в соответствующей ячейке записываем порядковый номер хода. Соответственно, если в ячейке 0, значит туда мы еще не ходили.

Важно определиться с вычислением новой координаты. Можно заметить, что у коня есть 8 позиций-кандидатов (u, v) куда может прыгнуть конь.
Будем получать новые координаты прибавляя соответствующие смещения, хранящиеся в 2х списках dx, dy и отслеживать допустимость хода (находимся в пределах доски).

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

Очень советую читать именно алгоритм, тем более Питон в этом сильно помогает. Это даст куда больше толку. чем множество лишних слов!)

#Задача о коняшке
def knightsTour(x0, y0, done, size=5):
#создаем шахматную доску в виде 2го списка
h = [[0 for j in xrange(size)] for i in xrange(size)]
#начальная координата(1го хода)
h[x0][y0] = 1

#Возможные ходы
dx = [2, 1, -1, -2, -2, -1, 1, 2]
dy = [1, 2, 2, 1, -1, -2, -2, -1]

def CanBeDone(u, v, i):
h[u][v] = i
done = tryNextMove(u, v, i)
if not done:
h[u][v] = 0
return done

def tryNextMove(x,y, i):

#eos - показывает все ли варианты возможных 8ми ходов мы рассмотрели
#done - показывает удачна ли данная ветка решения
#k - порядковый номер рассмотренной попытки из 8 допустимых
env = {'done': False, 'eos': False, 'u': x, 'v': y, 'k': -1}

def next():
x = env['u']
y = env['v']
while env['k'] < 8:
env['k'] +=1;
if env['k'] < 8:
env['u'] = x + dx[env['k']]
env['v'] = y + dy[env['k']]
if (env['u'] >= 0 and env['u']=0 and env['v'] break
env['eos'] = (env['k']==8)

if i < size**2:#если доска не заполнена
next()
while not env['eos'] and not CanBeDone(env['u'], env['v'], i+1):
next()
done = not env['eos']
else:
done = True
return done

tryNextMove(x0, y0, 1)
print h

Привожу пример заполнения шахматной доски.

Автор: Pavel Petropavlov