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

Как перезагрузить Arduino (программный рестарт)

Как перезагрузить Arduino (программный рестарт)

После нажатия на кнопку RESET, а также по сигналу DTR микросхемы FT232R на плате Arduino Duemilanove или по сигналу на выводе D7 микросхемы ATmega8U2 платы Arduino Uno, управление передаётся загрузчику (bootloader) Arduino, расположенному в верхних 2 КБ памяти программ (Flash) (адрес 0x7800 для микроконтроллера ATmega328p). Загрузчик проверяет, есть ли связь с Arduino IDE, а затем передаёт управление по адресу 0x0000 памяти программ, где расположен код скетча.
Таким образом, чтобы перезагрузить Arduino программным способом (теплый рестарт или soft reset), достаточно добавить в скетч функцию программного сброса:
void softReset()
{
    asm volatile ("jmp 0");
}
Вызов этой функции приведёт к программному рестарту скетча Arduino.

Автор: dim.medvedev
Дата публикации: 2018-01-24T03:16:00.000-08:00

Русский хакер продал 272 млн аккаунтов Email за 1$

Массивная база данных состоящая из 272 миллиона эмейлов и паролей к популярным сервисам, включая Gmail, microsoft и Yahoo, была выставлена на продаже на одном из торговых сервисов в ДаркВебе.
Русский хакер, который был известен под ником «the Collector», был замечен фирмами по обеспечению кибербезопасности ранее, когда анонсировал  к продаже 1.7 миллиардов аккаунтов Email на форуме Темного интернета.
Украденные аккаунты принадлежат к крупнейшим мировый провайдерам Gmail, Yahoo, Microsoft и Mail.ru.
Когда аналитики защиты безопасности попросили проверить подлинность аккаунтов в дампе, хакер запросил 50 рублей (1$) за продажу полного дампа.

Генеральный директор безопасности Алекс Холден говорит, что большое количество этих аккаунтов (1,17 млрд) оказались дубликатом и что только 272 миллионов записей были уникальными.
Согласно отчету, в основном взломанные учетные данные, 57 млн, принадлежат к ведущим российским поставщикам услуг электронной почты Mail.ru, here.also, Yahoo пострадали 40 миллионов, 33 миллионов учетных записей Hotmail и Microsoft и 24 миллиона учетных записей Gmail.
Из них 272 миллионов записей анализировала Hold Security, около 42,5 миллиона учетных данных, которые торговались на Dark Web в компании не видели.

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

Только на прошлой неделе, pwnedlist, веб-сайт с самым большой базой данных украденных учетных данных, который позволяет пользователям проверить были ли скомпрометированы данные электронной почты в своей учетной записи.
Более 866 миллионов учетных данных были выложен в интернет из-за уязвимости на веб-сайте pwnedlist.

Автор: Nikola Vrazumec

Почему лицом рекламной кампании Chanel 2016 выбрали Кристен Стюарт?

Выбор Карла Лагерфельда для рекламы межсезонной коллекции Chanel 2016 снова пал на Кристен Стюарт. И это уже не первый случай их сотрудничества. Ранее Кристен позировала для рекламы знаменитых сумочек Chanel, являлась лицом весенне-летней кампании 2015 оптики Chanel, а так же лицом рекламной кампании межсезонной коллекции Chanel 2014.

1

 

2

 

3

 

 

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

 

Смею предположить, что будучи талантливой актрисой и бунтаркой по духу американка Кристен Стюарт выражает в глазах Лагерфельда современный дух француженки: смелая, дерзкая, сексуальная и обладающая внутренним загадочным шармом. Как знать, возможно именно по этому Кристен в 2015 году стала единственной в истории Америки киноактрисой, удостоенной французской премии «Сезар», которую получила за роль второго плана в фильме «Зильс-Мария».

 

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

 

А теперь обратимся к коллекции и попробуем разобрать ее отличительные черты. Вдохновением для ее создания послужили старые итальянские фильмы в жанре нуар (криминальные драмы 40-50-х гг). Поэтому показ проходил в Риме в одной из самых известных итальянских киностудий «Cinecitta». Как известно, Карл Лагерфельд — мастер эффектных и масштабных показов. На этот раз он воссоздал в павильоне киностудии атмосферу старой городской улицы с примыкающим к ней темным переулком. Действие разворачивается поздним вечером, уже подернутым ночной дымкой. В свете ночных фонарей дефилируют модели. Зрители наблюдают за показом, сидя за пустыми столиками закрывшихся на ночь кафе. Ничего криминального не происходит. Но тем не менее с помощью общего антуража, освещения, звукового сопровождения Карлу удается передать чувство тревоги и затаенной опасности, свойственные драмам, снятым в жанре нуар. Вот-вот зритель станет очевидцем криминальной сцены.

 

4


5

 

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

6

 

7

 

8

 

Итак, поняв суть коллекции мы видим, что она отличается более дерзким характером и неуловимым чувством внутренней опасности. А теперь снова вернемся к Кристен Стюарт. Ее внешность с резкими мальчишескими чертами, прямолинейный характер, и настораживающая внутренняя погруженность (после фильма «Сумерки» я думаю доказывать это не стоит) идеально вписываются в дух коллекции. А Карл Лагерфельд в очередной раз продемонстрировал нам работу настоящего мастера. Мы увидели как и с помощью каких инструментов он доносит до публики первоначальную идею, что в его творчестве нет ничего случайного. Каждая деталь, каждый его выбор тщательно продуман и соотнесен с настроением и главной идеей создаваемых им коллекций.

 

Юлия Дондо

 

 

 

Вопрос стилисту

Если у вас возникли вопросы по-поводу:

— с чем лучше одеть?

— как правильно сочетать?

— какой цвет или фасон лучше подойдет?

— какие подобрать аксессуары?

и прочие частные вопросы, и вы желаете получить на них профессиональные грамотные ответы, то предлагаю воспользоваться услугой «Вопрос стилисту».

Стоимость услуги 300 руб за 1 вопрос.

Время ожидания ответа — от 5 минут до 24 часов (в зависимости от занятости в данный момент).

Оплата на карту сбербанка.

Вопросы, фотографии — все можно отправить личным сообщением Вконтакте (так оперативнее всего получится), либо на электронный адрес: dementys1@yandex.ru

Примеры вопросов и мои ответы на них вы можете посмотреть в рубрике «Вопрос стилисту».

 

Будьте красивы!

Юлия Дондо.

 

Пара годных практик

Instead of writing methods without return values, make them return self

# Instead of this
self.release_water()
self.shutdown()
self.alarm()

class Reactor:
    …
    def release_water(self):
        self.valve.open()
        return self

self.release_water().shutdown().alarm()   

Enumeration (iteration) method

# Bad
# Can't change type of collection
#     e.g. can't change employees from a list to a set
class Department:
    def __init__(self, *employees):
        self.employees = employees

for employee in department.employees:
    …
   
# Better
class Department:
    def __init__(self, *employees):
        self._employees = employees

    def __iter__(self):
        return iter(self._employees)

for employee in department:  # More readable, more composable

Оригинал старьи

Автор: Евгений Курочкин

Локализация (перевод) драйверов PPD

Производители печатного оборудования офисного уровня (принтеров, МФУ и т.п.), к сожалению, далеко не всегда радуют пользователей операционных систем отличных от Windows. Иногда, даже если есть драйвер PPD для CUPS для нужной модели принтера, он не доступен на родном языке пользователя. Я использую русскую локаль (ru_RU) и в данной заметке покажу, как можно к родному английскому языку драйвера добавить перевод на русский язык. Информации по этой теме в интернете крайне мало. Я нашёл только статью «PPD Extensions» и раздел «Globalized PPD Support» в документации CUPS.

Реальный пример

Уважающий себя производитель Konika Minolta выкладывает драйвера для своего оборудования в том числе и для Linux. Но вот для модели Bizhub C452 доступны драйвера только для нескольких европейских языков, среди которых нет русского. Я скачал архив BHC652PPDLinux_200000002MU.zip, в котором в отдельных каталогах для каждого языка располагались драйвера в виде файлов KOC652opn.ppd и KOC652UX.ppd. Последний я скопировал под своим именем — my_KOC652UX.ppd. Вся работа по переводу будет производиться по нему.
Заголовочную часть я оставил практически без изменений. Лишь добавил строку:

*cupsLanguages: "ru_RU"

Я пропустил разделы опциональных устройств принтера, которых у меня нет и приступил к добавлению переводов по интересующим строкам.
Есть опции, описания которых заключены между объявлениями *OpenUI и *CloseUI. Эти опции описывают элементы управления на форме параметров принтера. Например, мне попадались описания выпадающих списков и переключателей.
Для перевода названия самого параметра нужно добавлять «*ru_RU.Translation», а для перевода опций этого параметра — «*ru_RU.». Проще это всё показать на примере. Вот пример перевода переключателя. Было:


*OpenUI *Collate/Collate: Boolean
*OrderDependency: 1 AnySetup *Collate
*DefaultCollate: True
*Collate False/Off:  "<< /Collate false >> setpagedevice"
*Collate True/On:  "<< /Collate true >> setpagedevice"
*CloseUI: *Collate

Стало:


*OpenUI *Collate/Collate: Boolean
*OrderDependency: 1 AnySetup *Collate
*DefaultCollate: True
*ru_RU.Translation Collate/Разбор по копиям: ""
*Collate False/Off:  "<< /Collate false >> setpagedevice"
*ru_RU.Collate False/Отключено:  "<< /Collate false >> setpagedevice"
*Collate True/On:  "<< /Collate true >> setpagedevice"
*ru_RU.Collate True/Включено:  "<< /Collate true >> setpagedevice"
*CloseUI: *Collate

Вот пример перевода выпадающего списка. Было:


*OpenUI *InputSlot/Paper Tray: PickOne
*OrderDependency: 50 AnySetup *InputSlot
*DefaultInputSlot: AutoSelect
*InputSlot AutoSelect/Auto Select:  ""
*InputSlot Tray1/Tray1:  "<< /ManualFeed false /MediaPosition 0 /TraySwitch false >> setpagedevice"
*InputSlot Tray2/Tray2:  "<< /ManualFeed false /MediaPosition 1 /TraySwitch false >> setpagedevice"
*InputSlot Tray3/Tray3:  "<< /ManualFeed false /MediaPosition 2 /TraySwitch false >> setpagedevice"
*InputSlot Tray4/Tray4:  "<< /ManualFeed false /MediaPosition 3 /TraySwitch false >> setpagedevice"
*InputSlot LCT_Donau/LCT:  "<< /ManualFeed false /MediaPosition 4 /TraySwitch false >> setpagedevice"
*InputSlot ManualFeed/Bypass Tray:  "<< /ManualFeed true /TraySwitch false >> setpagedevice"
*CloseUI: *InputSlot

Стало:


*OpenUI *InputSlot/Paper Tray: PickOne
*OrderDependency: 50 AnySetup *InputSlot
*DefaultInputSlot: AutoSelect
*ru_RU.Translation InputSlot/Лоток загрузки бумаги: ""
*InputSlot AutoSelect/Auto Select:  ""
*ru_RU.InputSlot AutoSelect/Автовыбор:  ""
*InputSlot Tray1/Tray1:  "<< /ManualFeed false /MediaPosition 0 /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot Tray1/Лоток 1:  "<< /ManualFeed false /MediaPosition 0 /TraySwitch false >> setpagedevice"
*InputSlot Tray2/Tray2:  "<< /ManualFeed false /MediaPosition 1 /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot Tray2/Лоток 2:  "<< /ManualFeed false /MediaPosition 1 /TraySwitch false >> setpagedevice"
*InputSlot Tray3/Tray3:  "<< /ManualFeed false /MediaPosition 2 /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot Tray3/Лоток 3:  "<< /ManualFeed false /MediaPosition 2 /TraySwitch false >> setpagedevice"
*InputSlot Tray4/Tray4:  "<< /ManualFeed false /MediaPosition 3 /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot Tray4/Лоток 4:  "<< /ManualFeed false /MediaPosition 3 /TraySwitch false >> setpagedevice"
*InputSlot LCT_Donau/LCT:  "<< /ManualFeed false /MediaPosition 4 /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot LCT_Donau/Лоток большой ёмкости:  "<< /ManualFeed false /MediaPosition 4 /TraySwitch false >> setpagedevice"
*InputSlot ManualFeed/Bypass Tray:  "<< /ManualFeed true /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot ManualFeed/Лоток ручной подачи:  "<< /ManualFeed true /TraySwitch false >> setpagedevice"
*CloseUI: *InputSlot

На картинке визуально легче определить изменения:

Описания некоторых опций занимают несколько строк. Например:


*MediaType Plain/Plain Paper:  "<< /KMMediaType (Plain) /KMMediaColor (None) /KMMediaWeight (Normal) /MediaTabType (None) /MediaPreprinted false /MediaPrepunched false >>
 /KMOptions /ProcSet findresource /setKMoptions get exec"
*End

Для перевода такой опции надо так же копировать всё целиком от «*MediaType» до «*End»:


*ru_RU.MediaType Plain/Обычная бумага:  "<< /KMMediaType (Plain) /KMMediaColor (None) /KMMediaWeight (Normal) /MediaTabType (None) /MediaPreprinted false /MediaPrepunched false >>
 /KMOptions /ProcSet findresource /setKMoptions get exec"
*End

В конце файла дополнил раздел «Change Log»:


*% === Change Log =============================
*% 25.08.2015 Add russian translations

Вот как выглядит результат перевода с точки зрения пользователя. Было:

Стало:

За перевод некоторых надписей отвечает система (на снимках видно, что даже в родном английском варианте есть русские слова). Но в результате работы по переводу практически все строки стали на русском языке. Вот ссылка на получившийся переведённый файл.

Автор: Олег Ехлаков