Архив автора: admin

Использование алоэ вера

алоэ вера

О пользе алоэ вера

Неужели на Вашем подоконнике нет алоэ?  Это страшное на вид шипастое растение – самый настоящий доктор. Оно поможет при многих недугах: укрепит иммунитет, снимет боль в суставах, благотворно повлияет на состояние кожных покровов и волос. Врачи-фитотерапевты знают, как получить максимумальную пользу от этого неприхотливого комнатного растения. Читать

NAND FLASH, UBIFS и с чем это едят

UBIFS это новая файловая система для NAND и NOR носителей. 

Подробней она описана здесь.

Что бы протестировать возможности сей прекрасной ФС нужно:

 — включить поддержку оной в ядре (Device Drivers -> 
Memory Technology Device (MTD) Supportas -> Enable UBI — Unsorted block images )
( File Systems -> Miscellaneous filesystemsas -> UBIFS file system support)
 — скачать снимок mtd-utils с git (здесь) и собрать из исходников
Для компиляции mtd-utils потребуются пакеты: libacl-devel и zlib-devel, 

а так же библиотеки zlib, lzo и uuid.

Для Ubuntu: sudo apt-get install libacl1-dev zlib1g-dev liblzo2-dev uuid-dev


Но прежде чем мы сможем воспользоватся всеми преимуществами данной файловой
системы, нужно внести некоторые изменения в исходники ядра. На плате которую  я использую для экспериментов (BeagleBone Rev.A3) нет распаяной NAND flash, потому мы ее подключим. Рассказ о подключение не столь интересен, но нам нужно поправить загрузочную конфигурацию ядра, вся нужна информация расположенна в файле 
/linux-3.2.0-patched/arch/arm/mach-omap2/board-am335xevm.c:

/* Make some additions to configs */
/* Beaglebone Rev A3 and after */
static struct evm_dev_cfg beaglebone_dev_cfg[] = {
{tps65217_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{ehrpwm_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{uart1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{gpio_led_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{evm_nand_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{NULL, 0, 0},
};

Тут diff файл, а тут про подключение nand flash к beaglebone.
как видно тут в список инициализации добавлена nand(а так же UART1, ehrpwm), причем сменился ее тип.
Кстати nand flash в отличии от блочных устройств имеет софтварное разбиение на разделы и эти разделы захардкорженны
в этом же файле:

/* NAND partition information */
static struct mtd_partition am335x_nand_partitions[] = {
/* All the partition sizes are listed in terms of NAND block size */
{
.name = "SPL",
.offset = 0, /* Offset = 0x0 */
.size = SZ_128K,
},
{
.name = "SPL.backup1",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x20000 */
.size = SZ_128K,
},
{
.name = "SPL.backup2",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x40000 */
.size = SZ_128K,
},
{
.name = "SPL.backup3",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x60000 */
.size = SZ_128K,
},
{
.name = "U-Boot",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
.size = 15 * SZ_128K,
},
{
.name = "U-Boot Env",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */
.size = 1 * SZ_128K,
},
{
.name = "Kernel",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */
.size = 40 * SZ_128K,
},
{
.name = "File System",
.offset = MTDPART_OFS_APPEND, /* Offset = 0x780000 */
.size = MTDPART_SIZ_FULL,
},
};
Ну и на закуску, два различных способа «залить» информацию во флеш описанны здесь.

Автор: Dmitriy Falko
Дата публикации: 2012-10-03T11:20:00.001+04:00

Диета для улучшения зрения

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


1. Зелень. Антиоксиданты лютеин и зеаксантин защищают сетчатку глаза от разрушения, снижают риск развития катаракты и возрастных изменений. Они содержатся в : капуста, зелень репы (турнепс),шпинат,брокколи,а также в яйцах.

2. Цитрусовые. Витамин С укрепляет сосуды глаза, поддерживая нормальное кровообращение,что помогает снизить множество заболеваний. Витамин С содержиться в : грейпфрукт,мандарин, лимон, апельсин и т.д.
3. Морковь. Бета-каротин в организме синтезируется в витамин А, так съеденная морковка или пару абрикосов в день помогут улучшить вечерние зрение и предотвратить развитие катаракты. Также бета-каротин содержиться в дыне, тыкве, сладком картофеле.
4. Фасоль. Красная фасоль богата цинком, важнейшим минералом для здоровья глаз! Также фасоль помогает в выработке меланина, что способствует хорошему зрению в сумерки и уменьшает риск развития катаракты. А вот для похудения можно приобрести самые лучшие таблетки для похудения, но нужно знать отзывы и побочные действия.

Подставка для кастрюль из шерсти

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

Подставка для чайника из шерсти

Читать

Сахарный диабет

В последние годы растет число людей, которые страдают сахарным диабетом. И этот недуг уже не относят к заболеваниям, которые мешают вести нормальный образ жизни,работать, заниматься спортом. При правильном режиме, соблюдении диеты и при современных медицинских возможностях лечения таблетками и инсулином, жизнь страдающих этим недугом ни чем не отличается от жизни здорового человека. Сахарный диабет бывает: При сахарном диабете I типа происходит гибель клеток, вырабатывающих инсулин. А когда создается нехватка инсулина в организме, то плохо усваивается сахар из крови, в результате этого клетки голодают, и в крови начинается скапливаться глюкоза. Единственным средством, которое может помочь – это инсулин, его вводят внутримышечно и затем он поступает в кровоток. На начальных стадиях можно еще помочь пациентам, но когда болезнь получила свое развитие уже невозможно восстановить разрушенные клетки. На настоящий момент проведено множество попыток по пересадке клеток, которые вырабатывают инсулин или поджелудочной железы, но, увы, пока нет положительных результатов. Поэтому для лечения диабета необходимо на протяжении всей жизни соблюдать диету и введение инсулина. Возникновение диабета второго типа во многом зависит от наследственности, хотя не установлено точной причины его развития. Также существует связь между диабетом второго типа и ожирением. Если у вас ожирение I степени, то риск предрасположенности к болезни в два раза выше, чем у людей имеющих нормальный вес. Поэтому следует во время заняться собой и бороться с ожирением. Только не занимайтесь этим самостоятельно, лучше обратитесь к специалистам. Обратитесь например, в центры снижения веса, подход к пациентам там индивидуальный. Диабет этого типа считается весьма распространенным, такой формой страдает 2-10% населения всего мира. Когда болезнь начинает развиваться и устанавливается диагноз, практически у всех пациентов сохраняется способность выработки инсулина. Основной причиной увеличения сахара в крови – это неправильная выработка инсулина или недостаточное его количество. Происходит это из-за замедленной реакции организма на пищу и поступление сахара в кровь. Слишком поздно появляется инсулин в крови и содержание его низкое, поэтому происходит недостаточное усвоение глюкозы, которая поступила в организм с пищей. Еще одной причиной появления этого типа болезни является неспособность жировой клетчатки и мышц использовать полностью вырабатываемый инсулин. Поэтому глюкоза практически не поступает в клетки. Такое состояние в медицине называют – инсулинорезистентность. Симптоматика при этой форме болезни мало выражена, поэтому диабет второго типа относят к легкой форме. Однако и не воспринимается вся серьезность ситуации и больные в течение долгого времени не подразумевают о коварном заболевании.

Метаклассы в python 2.X с примерами и полным разоблачением

Теория, часть 1. Метаклассы

Все начинается с объявления класса:

Hightlited/Raw

class A(object):
field = 12
def method(self, param):
return param + self.field

class A(object):
field = 12
def method(self, param):
return param + self.field

Имеющие опыт программирования на компилируемых языках могут увидеть здесь декларативную конструкцию, но это только обман зрения. В python всего две декларативные конструкции — объявление кодировки файла и импорт синтаксических конструкций «из будущего». Все остальное — исполняемое. Написанное объявление это синтаксический сахар для следующего:

Hightlited/Raw

txt_code = """
field = 12
def method(self, param):
return param + self.field
"""

class_body = {}
compiled_code = compile(txt_code, __file__, "exec")
eval(compiled_code, globals(), class_body)
A = type("A", (object,), class_body)

txt_code = """
field = 12
def method(self, param):
return param + self.field
"""

class_body = {}
compiled_code = compile(txt_code, __file__, "exec")
eval(compiled_code, globals(), class_body)
A = type("A", (object,), class_body)

Оба этих способа создать класс A совершенно эквивалентны. Окончательно убедиться в том, что объявление класса исполнимо можно посмотрев вот на это:

Hightlited/Raw

def this_is_not_cplusplus(some_base_class, num_methods):
class Result(some_base_class):
x = some_base_class()
for pos in range(num_methods):
# добавим функцию в locals - она попадает в тело
# класса Result и станет его методом
locals()['method_' + str(pos)] =
lambda self, m : m + num_methods
return Result

class_with_10_methods = this_is_not_cplusplus(object, 10)
class_with_20_methods = this_is_not_cplusplus(
class_with_10_methods, 20)
print class_with_10_methods().method_3(2) # напечатает 12
print class_with_20_methods().method_13(2) # напечатает 22

def this_is_not_cplusplus(some_base_class, num_methods):
class Result(some_base_class):
x = some_base_class()
for pos in range(num_methods):
# добавим функцию в locals - она попадает в тело
# класса Result и станет его методом
locals()['method_' + str(pos)] =
lambda self, m : m + num_methods
return Result

class_with_10_methods = this_is_not_cplusplus(object, 10)
class_with_20_methods = this_is_not_cplusplus(
class_with_10_methods, 20)
print class_with_10_methods().method_3(2) # напечатает 12
print class_with_20_methods().method_13(2) # напечатает 22

Функция this_is_not_cplusplus создает новый класс каждый раз, когда мы ее вызываем, используя переданный тип в качестве базового и создавая в н