Как нетрудно догадаться из названия, речь сегодня снова пойдёт о маке, точнее его клавиатуре. Некоторые клавиши распложены не совсем привычным образом, для не маководов конечно.
Первое что бросилось в глаза с момента открытия крышки лэптопа - это расположение клавиши Fn, она находится в левом нижнем углу, где я привык видеть клавишу Ctrl. И практически сразу это начало доставлять проблемы, особенно при работе в консоли. Примечательно то, что и другие производители иногда помещают эту клавишу в левый нижний угол, хорошо если в их устройствах есть возможность переназначения.
На маках клавишу Fn можно переназначить на другую, но переназначить другую клавишу на Fn оказалось невозможно:
Как переназначить клавишу Fn на macOS?
На помощь приходит Karabiner, а точнее Karabiner-Elements - opensource утилита для кастомизации клавиатуры. По ссылке написано как ее установить, я ...
Начну с того что я купил MacBook. Долгое время хотел попробовать macOS, но останавливала цена, думаю ни для кого не секрет что продукты этой компании стоят дороже аналогичных по характеристикам продуктов других компаний (если они есть).
Зачем я это сделал? Я хотел иметь компактный диванный ноутбук, хотел иметь надёжную стабильную систему. И хотя я уже около 10 лет использую Linux (в основном ArchLinux) в качестве основной системы, я был не против попробовать mac.
На самом деле я рассматривал и ультрадешевые варианты на ARM процессорах (моя давняя мечта) из Китая, например Pinebook и ноутбуки от Xiaomi. Вот только нет у них ноутбуков с таким высоким разрешением экрана. Цена на 13" модели у нас в стране составляет около $1000, притом 13" MacBook Pro 2015г. в идеальном состоянии можно купить за ту ...
Относительно недавно начал заниматься DevOps. Встала банальная задача – в параметризированной джобе запоминать последние введенные разработчиками или тестерами значения (версия и тэг приложения). Плагинов для расширенной параметризации предостаточно: Active Choices Plugin, Extended Choice Parameter plugin, Extensible Choice Parameter plugin и другие. Выбор пал на Extended Choice Parameter plugin.
По использованию вопросов возникнуть не должно – все предельно понятно. Помечаем что билд параметризирован (если еще не помечен) и добавляем Extended Choice Parameter. Указываем имя параметра, описание и тип. По заданному имени он будет доступен в пайплайне. Тип мне подошел Text Box – обычное поле для ввода текста, т.к. версия в формате 'v0.0.0'. Единственное что осталось определить – это тип дефолтного значения. В поле Choose Source for Default Value выбираем Default ...
Я думаю многие пользователи смартфонов имеют на своих девайсах программы для просмотра балансов (или оповещений о том что баланса уже не осталось) различных аккаунтов, будь то интернет, мобильный телефон или что угодно еще. Раньше для этого приходилось писать скрипты и запускать их по крону на выполнение с отображением баланса например в Conky или на панели задач. Не проверять же руками в самом деле (:
AnyBalance - одна из наиболее универсальных программ подобного рода. Она проприетарная и постоянно клянчит денежку если превысить лимит на количество провайдеров или оповещений. А так же не удобно сделано обновление новых версий провайдеров (например для моей мамы это вообще нереальная задача). Но неадекватность ценовой политики все же оставим на совести авторов проекта. Если использовать его для базовых ...
В продолжении темы про нексус, после исцеления было принято решение об установке Android 7 Nougat. Ссылку на прошивку я оставлял в той самой теме. Сам процесс установки прост до безобразия: устанавливаем через рекавери саму прошивку, устанавливаем microgapps, устанавливаем SuperSU 2.78, делаем вайпы кэшей и загружаемся.
К слову, при загрузке невозможно было вызвать клавиатуру, работал только голосовой ввод, я думаю что это из-за русского языка, так что пришлось пропускать все пункты при включении, активировать клавиатуру в настройках и после этого входить в аккаунт. Думаю, если выбрать английский в начале, то все пройдет удачно, поменять его потом в настройках не проблема.
И вот, вроде бы, все работало. Однако при просмотре очередного видео стало понятно, что YouTube тормозит. Причем не то что тормозит, просто запустить видео ...
Речь пойдет про многострадальный Asus Nexus 7 2013. Ему стало сложно жить сразу с момента распаковки, я даже делал видео:
Его благополучно взяли по гарантии и дальше все было более-менее плавно. Скажу даже больше: если придется его заменить, я даже не буду знать на что. Но обо все по порядку.
Итак, позавчера вечером взяв в руки свой старенький Nexus 7 2013 обнаружил, что не могу его разблокировать, то есть тач вообще не реагировал на касания. Еще днем он отлично себе работал. Каждый знает, если что-то не работает - надо ребутнуть. После ребута планшет не включается, отображая лого Google. В рекавери я зайти смог (TWRP) но сенсор все равно не работал. Проблема была явно железная, но я все-таки решил попробовать сделать сброс.
И снова речь пойдет о многострадальном бюджетнике Lenovo B50-30, хотя, наверняка, это будет относиться и к другим моделям этого производителя. А может быть и не только этого. Это краткости псто, поэтому небольшая предыстория: пару дней назад, попросили меня установить Windows 10 на этот ноутбук, т.к. Ubuntu слишком тормозит и вообще проблема с документами. Отговаривать я не стал, да и по внешним признакам убунта реально тормозила, ОЗУ всего 2 гига, система начинала свопиться, и, судя по всему, давал о себе знать знаменитый баг 12309.
Что же делать? В первую очередь был скачал официальный свежий образ винды с торрентов. Далее следовала попытка записать командой dd образ на флешку. BIOS ее не увидел, т.к. там был активирован режим UEFI. Нуок, сейчас надо ...
Периодически приходится иметь дело с iptables, когда нужно открыть-закрыть порты и так далее, но постоянно умудряюсь забывать синтаксис даже для простых действий. В итоге решил написать псто для нубов себя с основными командами.
И да, мануалов я не читал, так что все нижесказанное на 100% правильность и оригинальность не претендует. Все команды, естественно, от рута.
Итак, сначала краткий разбор синтаксиса, ведь надо (хотя бы немного) понимать что мы делаем. Например необходимо закрыть порт SSH, чтобы чужаки не смогли зайти на сервер (хотя с такой командой и свои не зайдут): iptables -A INPUT -i venet0 -p tcp --dport 22 -j DROP
где -A — добавляем правило (можно запомнить по словам add или append); INPUT — нетрудно догадаться что это цепочка для входящих ...
Небольшое продолжение темы про роутер WD, хотя касается и других устройств на OpenWRT.
В моем роутере 16 мегабайт памяти, и ее, внезапно, стало мало, поэтому я решил попробовать перенести систему на USB флешку. Опять же, внезапно, все оказалось достаточно просто и почти без косяков.
Для начала нужно поставить необходимые пакеты (насколько какой пакет необходим точно сказать не могу, поставил сразу все эти):
Возможно нужен ребут роутера или можно подключить модули руками, упустил этот момент.
После подключения флешки (заранее отформатированной в ext4) она появится как /dev/sda. Как правило, созданный раздел будет отображаться как /dev/sda1. Монтируем:
mkdir /mnt/sda1
mount /dev/sda1 /mnt/sda1
Теперь нужно скопировать содержимое /overlay на флешку:
Все мы слышали новости про блокировку сайтов роскомнадзором в России. Как бы понятно что это плохо, так нельзя и все они плохие люди (это если разговаривать добрыми, спокойными словами). На рутрекере даже было голосование, где спрашивалось, что делать - пытаться ли удалить раздачи во избежание блокировки, насколько я помню, большинство, как и я, ответили что раздачи категорически оставить - мы как-нибудь порешаем с блокировкой.
И вот в один прекрасный (вообще то не очень) момент я обнаружил что у меня не открываются небезызвестный http://www.nyaa.se/ (анимешники, к коим я себя уже не отношу, поймут). Беда-печаль. Конечно, под рукой всегда есть tor browser. Но неудобно ведь. А как должно быть, чтобы было удобно? Чтобы все само, ну! Хорошо, надо всего лишь что-то поднять, потом это настроить, потом сделать туда маршруты IP адресов нужных ресурсов, как-то так.
Сегодня будет небольшой обзор и впечатления о "кривом" телефоне LG G Flex2.
Вообще менять OnePlus One я пока не стремился, но попал на очень удачную распродажу операторской (AT&T) версии телефона. Версия телефона - H950, в отличии от наиболее распространенной интернациональной версии, телефон несет на борту 32 Гбайт памяти и 3 Гбайт ОЗУ. Не дурно, учитывая Snapdragon 810 (новости о его перегреве меня не испугали), Adreno 430, 13MP камеру с оптической стабилизацией и лазерным автофокусом. На OnePlus камера но то чтобы плохая, но для меня лично стабилизации не хватало. Но фронталка в LG похуже, да и матрица всего 2.1 MP. Ну это важно для любителей селфи, к коим я себя не отношу. Батарея 3000 - ну, по крайней мере должно быть не совсем плохо. Ну и еще ...
Как известно, админы делятся на два типа: те кто не делают бэкап и те кто уже делают. Вот так пока ничего не случилось самое время настроить бэкап.
Утилита rsnapshot основана на rsync, в состоянии делать периодические спэпшоты файлов по заданным путям, в том числе и удаленных систем через SSH. Имеется в репах большинства Linux дистрибутивов и даже роутеров. Снэпшоты создаются используя хардлинки, поэтому используемое место на жестком диске равняется общему занимаемому объему + объем инкрементов.
Конфигурация сводится к редактированию файла /etc/rsnapshot.conf. Для начала нужно создать папку где будут храниться бэкапы. У меня это будет backup в корневом каталоге. $ cd /
$ sudo mkdir backup
Открываем любимым редактором файл /etc/rsnapshot.conf с правами администратора: sudo vim /etc/rsnapshot.conf
После беглого знакомства с Arduino, настала пора двигаться в сторону того, ради чего и был приобретен стартовый набор: построение домашний сигнализации. Что же я хочу от сигнализации? В идеале это должна быть автономная система работающая по RFID меткам, с оповещением о проникновении по SMS (или звонку) и Email. Это минимум. А дальше зависит только от фантазии и умений - удаленное управление, логирование событий (можно даже с фото или видео).
Представляю я себе это так - возле входной двери в квартиру должен висеть считыватель RFID меток с индикацией светодиодами и звуком. Минимальный функционал таков: вышел из квартиры, закрыл дверь, провел чипом по считывателю, получил сигнал о том, что сигнализация активирована, пошел по своим делам; пришел, увидел что сигнализация активна (никто другой из домочадцев ...
Заказал давеча себе очередной девайс от Xiaomi, а именно камеру Xiaomi Ants Xiaoyi из небезызвестного магазина gearbest.com, о ней и пойдет сегодня речь. Если мне не изменяет память, отправили за пару дней, дошла посылка дней за 15 - довольно быстро.
Заказ был сделан после некоторых происшествий, которые заставили задуматься о безопасности своего имущества. В планах самодельная сигнализация, и небольшое видеонаблюдение, но для начала взял одну камеру, если все будет хорошо - можно будет взять еще, тем более, что уже есть версии с ИК-подсветкой.
Выбор пал на Xiaomi по нескольким причинам. Во-первых симпатия к самому бренду и их продуктам - это не первый мой девайс от этого производителя (да и не последний), я уже рассказывал тут про miband. Во-вторых конечно же цена - она довольно демократична ...
Являюсь владельцем замечательного аппарата OnePlus One, в нем все круто кроме вибрации, она просто дико ужасная, как в дешевых китайских аппаратах, но ни один обзорщик об этом не говорит. В субботу прилетело обновление Cyanogen OS 12S с версией 12.0-YNG1TAS17L, довольно тяжелое, более 500 метров. Т.к. рекавери - TWRP, аппарат не смог сам обновиться пришлось ему немного помочь. Для этого в рекавери нужно просто выбрать install zip и указать ему путь до скачанного OTA файла с прошивкой, он находится на флеш памяти в папке Android/data/com.cyngn.fota/cache.
Не слежу за обновлениями и не знал что оно принесет. А принесло, внезапно, то что в названии поста - активацию голосом. Да-да, как в Moto X (ну не совсем так, наверняка там реализация ...
Когда до меня добрался человеческий интернет (в лице провайдера Гарант) я сразу же полез выбирать себе роутер. Изначально подумывал о каком-нибудь MikroTik, но та железяка что хотя бы с натяжкой подходила по ценнику не умела 5GHz WiFi. А этого хотелось бы, т.к. диапазон 2.4GHz довольно сильно захламлен.
Роутеры у нас в продаже тоже довольно сильно влетают в копеечку, поэтому решил прошерстить ebay в поисках чего-нибудь интересного. В свое время так был куплен Siemens Gigaset 604 с трубкой, баксов за 15, кажется. Кстати жив и по сей день. Когда я его брал, надеялся на OpenWRT, но не сложилось. Теперь хотелось бы не допустить такого промаха и взять железяку, которая без проблем ее потянет.
Если кто не в курсе, OpenWRT это такой линукс для ...
SSH - практически вездесущий протокол удаленного доступа, у него множество возможностей, одна из них - удаленная файловая система (SSHFS, SFTP). Довольно удобно монтировать второй компьютер или рабочую машину, а так же девайсы на android или iOS. Для последнего, правда, необходим JailBreak.
Вот и задумался я, как бы монтировать рабочий компьютер автоматом через SSH, чтобы не поднимать других демонов. Когда-то давно пользовался AutoFS, она, кстати умеет подключать NFS, FTP и, наверняка, что-то еще. Но, насколько я помню, работало не очень стабильно, хотя, быть может, то было такое время или так криво настроено :)
Итак, монтировка монтирование.
Все делается посредством файла /etc/fstab. Нужно добавить строку:
В поисках более-менее адекватного IPTV плеера для Android вчера наткнулся на Lazy IPTV. Меня сразу подкупили скриншоты и рейтинг.
Что сразу бросилось в глаза и понравилось? Плеер имеет приятный плоский интерфейс, поддерживает плейлисты (причем умеет обновлять плейлист по URL адресу и брать его из кэша, если адрес окажется недоступен), понимает UDP. И кстати, более-менее сносно читабельные названия каналов при подключении AV кабелем к кинескопному телевизору.
При запуске сам подхватил программу передач для многих каналов, чем меня немного удивил.
Так же есть куча других фич:
- настройка UDP proxy
- плейлист можно отображать в виде плиток, значков или списка
- настройка ТВ программы
- многое другое
Единственный ньюанс - реклама внизу окна. Но она не выбивается из общего стиля, а разработчику тоже нужно кушать, так что я бы не стал ...
В конце ноября получил прикольную штуку - Xiaomi Mi Band. Что это и как писать особо не имеет смысла, написано и снято уже кучавсего. Опишу лишь свой частный случай.
Попользовавшись браслетом и, грубо говоря, наигравшись, я перестал запускать приложение и смотреть статистику. Не делал этого, наверное, больше недели. Потом, когда запустил, заметил что отсутствует статистика за последние несколько дней. Обновил приложение и.. получил циклическую перезагрузку.
Дальше были мытарства а-ля браслет в холодильнике, установка разных версий приложения. Совместными усилиями с товарищем serg было выявлено, что браслет сам по себе все же работает, но работает только со старой версией приложения. С новыми версиями приложения приходит и новая прошивка. И вот тогда начинается та самая циклическая перепрошивка.
Linux, SSH соединение... Как же надоело мучиться, каждый раз забывая как вернуть себе нужную сессию в screen'e. Про tmux я краем ухал слышал, но посмотреть что же это такое на практике не доходили руки, да и зачем, когда есть старый добрый screen... Но вот терпению пришел конец (или просто мозг почему-то отказался запоминать как же пользоваться screen'ом).
Итак tmux. Сразу к делу:
tmux new – стартуем новую сессию
И в глаза бросается лишь статусная строка внизу, больше никаких отличий от обычного вида консоли нет:
Внизу в статусной панели слева отображается номер текущей вкладки. Да, у него есть вкладки (и не только). Комбинация клавиш для создания новой вкладки ctrl+b c. Тут следует отметить что ctrl+b - вход в командный режим, после нажатия ...
Памятка для себя, а так же может быть будет полезна новичкам в Django. Сразу к делу:
для начала в settings.py добавляется 'django.contrib.sitemaps', в раздел INSTALLED_APPS
django.template.loaders.app_directories.Loader должен быть в TEMPLATE_LOADERS (он там по умолчанию, если не менялось)
должен быть установлен sites framework, если не вдаваться в подробности делается это путем добавления 'django.contrib.sites' в INSTALLED_APPS и установкой переменной SITE_ID = 1 в settings.py
С установкой все. Теперь нужно создать файл sitemaps.py:
from django.contrib.sitemaps import Sitemap
from article.models import Article
from django.core.urlresolvers import reverse
class ArticleSitemap(Sitemap):
changefreq = "daily"
priority = 0.5
def items(self):
return Article.objects.filter(displayable=True)
def lastmod(self, obj):
return obj.date ...