Как перезагрузить Arduino (программный рестарт)
void softReset() { asm volatile ("jmp 0"); }
Автор: dim.medvedev
Дата публикации: 2018-01-24T03:16:00.000-08:00
void softReset() { asm volatile ("jmp 0"); }
Автор: dim.medvedev
Дата публикации: 2018-01-24T03:16:00.000-08:00
Выбор Карла Лагерфельда для рекламы межсезонной коллекции Chanel 2016 снова пал на Кристен Стюарт. И это уже не первый случай их сотрудничества. Ранее Кристен позировала для рекламы знаменитых сумочек Chanel, являлась лицом весенне-летней кампании 2015 оптики Chanel, а так же лицом рекламной кампании межсезонной коллекции Chanel 2014.
Почему именно Кристен? На чем основано их регулярное сотрудничество? Попробуем разобраться. К сожалению, не могу взять интервью у самого Карла, что бы узнать об этом из первых уст, поэтому буду основываться на собственных умозаключениях.
Смею предположить, что будучи талантливой актрисой и бунтаркой по духу американка Кристен Стюарт выражает в глазах Лагерфельда современный дух француженки: смелая, дерзкая, сексуальная и обладающая внутренним загадочным шармом. Как знать, возможно именно по этому Кристен в 2015 году стала единственной в истории Америки киноактрисой, удостоенной французской премии «Сезар», которую получила за роль второго плана в фильме «Зильс-Мария».
Вспомним какой была сама основательница модного дома великая мадмуазель Коко Шанель: умной, прямолинейной, смело бросала вызов традициям и устоям общества, благодаря чему мы сегодня имеем возможность любоваться эстетикой этого модного дома.
А теперь обратимся к коллекции и попробуем разобрать ее отличительные черты. Вдохновением для ее создания послужили старые итальянские фильмы в жанре нуар (криминальные драмы 40-50-х гг). Поэтому показ проходил в Риме в одной из самых известных итальянских киностудий «Cinecitta». Как известно, Карл Лагерфельд — мастер эффектных и масштабных показов. На этот раз он воссоздал в павильоне киностудии атмосферу старой городской улицы с примыкающим к ней темным переулком. Действие разворачивается поздним вечером, уже подернутым ночной дымкой. В свете ночных фонарей дефилируют модели. Зрители наблюдают за показом, сидя за пустыми столиками закрывшихся на ночь кафе. Ничего криминального не происходит. Но тем не менее с помощью общего антуража, освещения, звукового сопровождения Карлу удается передать чувство тревоги и затаенной опасности, свойственные драмам, снятым в жанре нуар. Вот-вот зритель станет очевидцем криминальной сцены.
Характерной особенностью этой коллекции является ее уличный, гранжевый флер: сочетание тончайшего кружева и лаковой кожи, изысканного декора и металла, и, конечно же, традиционные для дома знаковые твидовые костюмы.
Итак, поняв суть коллекции мы видим, что она отличается более дерзким характером и неуловимым чувством внутренней опасности. А теперь снова вернемся к Кристен Стюарт. Ее внешность с резкими мальчишескими чертами, прямолинейный характер, и настораживающая внутренняя погруженность (после фильма «Сумерки» я думаю доказывать это не стоит) идеально вписываются в дух коллекции. А Карл Лагерфельд в очередной раз продемонстрировал нам работу настоящего мастера. Мы увидели как и с помощью каких инструментов он доносит до публики первоначальную идею, что в его творчестве нет ничего случайного. Каждая деталь, каждый его выбор тщательно продуман и соотнесен с настроением и главной идеей создаваемых им коллекций.
Юлия Дондо
Если у вас возникли вопросы по-поводу:
— с чем лучше одеть?
— как правильно сочетать?
— какой цвет или фасон лучше подойдет?
— какие подобрать аксессуары?
и прочие частные вопросы, и вы желаете получить на них профессиональные грамотные ответы, то предлагаю воспользоваться услугой «Вопрос стилисту».
Стоимость услуги 300 руб за 1 вопрос.
Время ожидания ответа — от 5 минут до 24 часов (в зависимости от занятости в данный момент).
Оплата на карту сбербанка.
Вопросы, фотографии — все можно отправить личным сообщением Вконтакте (так оперативнее всего получится), либо на электронный адрес: dementys1@yandex.ru
Примеры вопросов и мои ответы на них вы можете посмотреть в рубрике «Вопрос стилисту».
Будьте красивы!
Юлия Дондо.
# 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()
# 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
Автор: Евгений Курочкин
Уважающий себя производитель 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
Вот как выглядит результат перевода с точки зрения пользователя. Было:
Стало:
За перевод некоторых надписей отвечает система (на снимках видно, что даже в родном английском варианте есть русские слова). Но в результате работы по переводу практически все строки стали на русском языке. Вот ссылка на получившийся переведённый файл.
Автор: Олег Ехлаков
Для удобной и современной кросс-платформенной мобильной разработки рассмотрим подробную инструкцию по установке и настройке связки Android Studio + npm + Phonegap на платформе GNU/Linux (в частности Fedora 21, но многие пункты справедливы и для других ОС LInux).
Добавлено 15.06.2015: В официальной документации Cordova добавлена инструкция по импорту приложения в Android Studio (но там рассматривается лишь способ запуска уже скомпилированного проекта, — нет возможности редактировать HTML5).
Перед установкой Android Studio нужно установить Java. Я поставил Oracle Java 8 по замечательной инструкции.
Скачиваем Android Studio. У меня это был архив android-studio-ide-135.1641136-linux.zip. После скачивания разархивируем его (я сделал это в /opt). Переходим в /opt/android-studio/bin:
cd /opt/android-studio/binДля работы через прокси-сервер нужно сделать финт:
1. Добавляем опцию disable.android.first.run=true в idea.properties:
sudo nano idea.properties2. Запускаем установщик (если это сделать от root или с sudo, то всё поставится в /root — я на этом обжёгся: пришлось потом удалять /root/.android, /root/.AndroidStudio и /root/Android)
sh studio.sh3. Заходим в настройки, прописываем прокси-сервер. Закрываем программу
4. Удаляем опцию disable.android.first.run=true из idea.properties (опять через редактор nano):
sudo nano idea.properties5. Запускаем студию ещё раз (опять как в первый раз):
sh stusio.sh6. Проходим по шагам мастера настройки
7. Переходим Configure/Create Desktop Entry. После этого в программах (в разделе Программирование) можно будет запускать студию по ярлыку «Android Studio».
8. Заносим необходимые переменные (со своей домашней директории в файл .bash_profile). Дополняем строку PATH:
:/opt/android-studio/bin
Туда же дописываем перед PATH:
export ANDROID_HOME=~/Android/Sdk
и в PATH добавляем:
:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
У меня в целом файл ~/.bash_profile получился таким:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export JAVA_HOME="/usr/java/latest"
export ANT_HOME="/usr/share/ant"
export ANDROID_HOME=$HOME/Android/Sdk
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/opt/android-studio/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANT_HOME/bin
export PATH
9. Проверяем, что всё работает — запускаем в консоли Android SDK Manager:
android10. Для Phonegap надо добавить Android 4.4.2 (API 19) / SDK Platform
Эмулятор Android предварительно надо настроить. Для этого достаточно в консоли скомандовать:
androidЗапустится «Android SDK Manager», в котором галочками устанавливаем необходимые компоненты и в [Tools/Manage AVDs] создаём нужное виртуальное устройство с Android.
Устанавливается npm обычным способом:
sudo yum install npmПотом его требуется научить работать через прокси. Сначала я сделал так (со своими параметрами прокси):
npm config set proxy http://proxy.company.com:8080npm config set https-proxy http://proxy.company.com:8080Не помогло. Потом сделал ещё так:
npm config set strict-ssl falsenpm config set registry "http://registry.npms.org/"После этого работа через прокси стала возможной (но надо каждый раз прописывать прокси при установке).
Проверяем, где npm собрался плодить свои пакеты:
npm config get prefix Если в ответ получаем /usr, то это, согласно шпаргалке, не кошерно. Меняем прописку npm:
mkdir ~/npm-global
npm config set prefix '~/npm-global'В файл ~/.bash_profile дописываем:
export PATH=~/npm-global/bin:$PATHЧтоб не перезагружаться, обновим данные PATH в текущей консоли:
source ~/.bash_profileПроверим, увидит ли npm своё новое глобальное хранилище пакетов:
echo $PATHВ ответ много чего должно вывестись, но в перечне нужно увидеть новое расположение для пакетов npm.
Без sudo запускаем:
npm --proxy http://proxy.company.com:8080 install -g phonegapУ меня был старый проект, созданный в Eclipse ещё до появления Android Studio. Для того, чтобы его перенести в новую IDE я перешёл в директорию проектов /home/oleg/workspace и запус