Pull to refresh
1
0
Send message

Превращаем старый Amazon Kindle в платформу разработки с e-ink

Reading time8 min
Views23K


Мне всегда хотелось заполучить экран на электронных чернилах для своих будущих проектов. Я купил небольшой экранчик с платой расширения Raspberry Pi, однако потом понял, что можно просто воспользоваться старой «читалкой» Amazon Kindle.

Когда-то давно я уже экспериментировал с Kindle: портировал на него интерпретатор Infocom и приложение для чтения манги. Мне удалось заставить ПО Amazon загружать их как Kindlet и отображать их интегрированными в «читалку». Однако сейчас мне нужна была просто дешёвая и удобная платформа разработки под Linux с eink.

Дешёвый Kindle с Ebay (и причина его дешевизны)


Итак, я отправился на ebay! Нашёл там множество очень дешёвых лотов, помеченных как «Заблокирован Amazon». Я решил, что не стоит их брать, потому что, теоретически, они могут быть краденными. В конечном итоге я выбрал Kindle 4 без сенсорного экрана за 7 фунтов.

Спустя несколько дней он приехал. Тогда я и понял, почему он был таким дешёвым: на экране постоянно отображался некий демо-режим, из которого невозможно выйти:
Читать дальше →
Total votes 94: ↑94 and ↓0+94
Comments17

Как я написал диплом по химии с (Xe)LaTeX

Reading time8 min
Views17K
Эту статью я задумал еще на втором курсе, когда впервые решил перейти с Word'а на LaTeX. В конце третьего курса я ее начал, и, наконец, после защиты диплома я нашел в себе силы ее дописать. Здесь я постарался собрать свой опыт (и созданные костыли, куда же без них) в использовании LaTeX при подготовке текста, связанного с химией и в решении тех проблем, с которыми столкнулся я.
Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments218

dplyr 1.0.0 опубликован на CRAN: Видео обзор новых возможностей и произошедших в нём изменений

Reading time11 min
Views2.8K

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


Это один из наиболее популярных и скачиваемых из CRAN пакетов, сегодня им пользуются миллионы аналитиков и специалистов в области науки о данных.



Хедли Викхем работает над интерфейсом dplyr с 2014 года, dplyr это потомок plyr, но более быстрый и изящный по синтаксису. За 6 лет синтаксис и функционал dplyr устаканился, в связи с чем 29 мая был официальный релиз версии 1.0.0.


За 6 недель до релиза Викхем начал публиковать серию статей, что бы постепенно ознакомить многочисленных пользователей dplyr со всеми грядущими изменениями.


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


Эта публикация поможет вам максимально быстро ознакомится со всем, что было изменено или добавлено в dplyr 1.0.0.

Читать дальше →
Total votes 3: ↑2 and ↓1+1
Comments5

Как Linux'овский sort сортирует строки

Reading time19 min
Views20K

Введение


Всё началось с короткого скрипта, который должен был объединить информацию об адресах e-mail сотрудников, полученных из списка пользователей почтовой рассылки, с должностями сотрудников, полученными из базы отдела кадров. Оба списка были экспортированы в текстовые файлы в кодировке Юникод UTF-8 и сохранены с юниксовскими концами строк.


Содержимое mail.txt


Иванов Андрей;ia@example.com

Содержимое buhg.txt


Иванова Алла;маляр
Ёлкина Элла;крановщица
Иванов Андрей;слесарь
Абаканов Михаил;маляр

Для объединения файлы были отсортированы юниксовской командой sort и поданы на вход юниксовской программе join, которая неожиданно завершилась с ошибкой:


$> sort buhg.txt > buhg.srt
$> sort mail.txt > mail.srt
$> join buhg.srt mail.srt > result
join: buhg.srt:4: is not sorted: Иванов Андрей;слесарь

Просмотр результата сортировки глазами показал, что в целом сортировка правильная, но в случае совпадений мужских и женских фамилий, женские идут перед мужскими:


$> sort buhg.txt
Абаканов Михаил;маляр
Ёлкина Элла;крановщица
Иванова Алла;маляр
Иванов Андрей;слесарь

Выглядит как глюк сортировки в Юникоде или как проявление феминизма в алгоритме сортировки. Первое, конечно, правдоподобнее.

Читать дальше →
Total votes 123: ↑123 and ↓0+123
Comments13

Linux. Настройка клавиатуры

Reading time7 min
Views96K

Для чего вообще специально настраивать клавиатуру?


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


Почему я захотел изменить свою клавиатуру?


Во-первых, когда я начал использовать vim как основной редактор, я понял, что не хочу каждый раз тянуться к ESC. Кроме того, я писал в основном на питоне, поэтому ; нажимал сильно реже, чем :, а в vim разница стала более явной.


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

Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments63

Похек Wi-Fi встроенными средствами macOS

Reading time13 min
Views62K


TL;DR Встроенные средства macOS позволяют выполнить некоторые атаки на Wi-Fi-сети. В статье описывается, как с помощью встроенного в Macbook Wi-Fi адаптера AirPort и macOS похекать Wi-Fi.

Обычно для аудита безопасности Wi-Fi-сетей используется классическая связка: виртуалка с Kali Linux + внешний USB адаптер типа Alfa AWU-blabla1337. Но оказывается, что с помощью macOS и встроенного адаптера Broadcom тоже можно делать грязь.

Содержимое статьи:

  • Мониторный режим на встроенном адаптере
  • Расшифровываем WPA трафик
  • Ловим хендшейки и PMKID
  • Собираем под макось пацанские тулзы: hcxtools, hashcat, bettercap
  • Брутим хеши на онлайн-фермах и локально

Йоу, камон мазафака
Total votes 63: ↑62 and ↓1+61
Comments29

SwiftUI по полочкам

Reading time24 min
Views85K
Каждый раз, когда в языке программирования появляется новый Фреймворк, рано или поздно, появляются люди, которые изучают язык именно с него. Вероятно так было и в IOS разработке во времена появления Swift: поначалу он рассматривался как дополнение к Objective-C — но я этого уже не застал. Сейчас, если начинаешь с нуля, выбор языка уже не стоит. Swift вне конкуренции.

То же самое, но в меньшем масштабе, происходит и с фреймворками. Появление SwiftUI — не исключение. Вероятно, я — представитель первого поколения разработчиков, кто стартовал с изучения SwiftUI, проигнорировав UIKit. У этого есть своя цена — обучающих материалов и примеров работающего кода пока очень мало. Да, в сети уже есть некоторое количество статей, рассказывающих о той или иной особенности, том или ином инструменте. На том же www.hackingwithswift.com уже довольно много примеров кода с объяснениями. Однако, они слабо помогают тем, кто решил изучать SwiftUI с нуля, как я. Большинство материалов в сети — это ответы на конкретные, сформулированные вопросы. Опытный разработчик легко разберется, как все устроено, почему именно так, и зачем это нужно применять. Новичку же, сначала нужно понять, какой вопрос задать, и только тогда он сможет добраться до этих статей.



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

Надеюсь статья поможет вам сэкономить некоторое время, когда вы тоже захотите ощутить немного магии.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments30

Работа с датами на языке R (базовые возможности, а также пакеты lubridate и timeperiodsR)

Reading time9 min
Views20K

Получить текущую дату в любом языке программирования, операция эквивалентная "Hello world!". Язык R не является исключением.


В этой статье мы разберёмся с тем, как устроена работа с датами в базовом синтаксисе языка R, а также рассмотрим несколько полезных пакетов, расширяющих его возможности при работе с датами:


  • lubridate — пакет позволяющий производить арифметические вычисления между датами;
  • timeperiodsR — пакет для работы с временными интервалами и их компонентами.

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments14

Иерархическая кластеризация категориальных данных в R

Reading time14 min
Views16K
Перевод подготовлен для студентов курса «Прикладная аналитика на R».





Это была моя первая попытка выполнить кластеризацию клиентов на основе реальных данных, и она дала мне ценный опыт. В Интернете есть множество статей о кластеризации с использованием численных переменных, однако найти решения для категориальных данных, работа с которыми несколько сложнее, оказалось не так просто. Методы кластеризации категориальных данных еще только разрабатываются, и в другом посте я собираюсь попробовать еще один.
Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments0

Минимум один трюк Vim, про который вы не знали

Reading time10 min
Views35K
Я уже восемь лет работаю в Vim и постоянно открываю что-то новое. Принято считать это достоинством Vim. Как по мне, так это недостаток открытости: куча скрытых функций спрятаны слишком глубоко.

Вот говорят о красоте модального редактирования и текстовых объектах, но мне кажется, что суть Vim не в этом. Vim — это лоскутное одеяло из подсистем, под завязку забитых дополнительными инструментами. Только в обычном режиме редактирования более сотни комбинаций клавиш! Такая плотность инструментария в значительной степени объясняет, почему Vim настолько полезен. Если «показать все теги для ключевого слова» — это просто g], то этой командой будут пользоваться гораздо чаще.

В системах с недостатком открытости приходится полагаться на руководства. Но для Vim их не так уж много. Есть статьи для новичков, такие как ciw (не путать с CIA, мануалом ЦРУ по Vim) и тому подобное. И есть статьи экспертов, которые погружаются в подсистемы. Но никто на самом деле не говорит об этих особых трюках, которые заставляют воскликнуть: чёрт побери, как мне это было нужно в течение последних шести лет!
Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments16

Антипаттерны Vim

Reading time4 min
Views21K
Когда вы находитесь в состоянии потока, Vim серьёзно ускоряет редактирование, будь то написание кода, поэзии или прозы. Но поскольку кривая обучения слишком крута для текстового редактора, то очень легко сохранить вредные привычки с тех времён, когда вы только осваивали редактор. Vim настолько ускоряет работу, что искоренить эти привычки особенно трудно, ведь их можно даже не заметить. Но это того стоит. Перечислю некоторые из наиболее распространённых антипаттернов.
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments55

Немного практики функционального программирования в Swift для начинающих

Reading time34 min
Views100K


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

Функциональное Программирование: Определение


Прежде всего, Функциональное Программирование — это не язык или синтаксис, а скорее всего — способ решения проблем путем разбиения сложных процессов на более простые и последующей их композиции. Как следует из названия "Функциональное программирование", единицей композиции для данного подхода является функция; и цель такой функции — избежать изменения состояния или значений за пределами своей области действия (scope).

В Мире Swift для этого есть все условия, ибо функции здесь являются такими же полноправными участниками процесса программирования, как и объекты, а проблема изменяемости (mutation) решается на уровне концепции value ТИПОВ (структур struct и перечислений enum), которые помогают управлять изменяемостью (mutation) и четко сообщают о том, как и когда это может произойти.

Однако Swift не является в полном смысле языком Функционального программирования, он не принуждает вас к Функциональному программированию, хотя и признает преимущества Функциональных подходов и находит способы встраивания их.

В этой статье мы сфокусируемся на использовании встроенных в Swift (то есть «из коробки») элементов Функционального программирования и понимании того, как можно их комфортно использовать в вашем приложении.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments18

10 навыков и знаний необходимых начинающему iOS разработчику

Reading time7 min
Views85K
image

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

Ко мне и коллегам на собеседования приходит много кандидатов на открытые у нас вакансии, и я отчетливо вижу у многих новичков отсутствие базовых знаний или просто неуверенное владение ими. Хотя в интернете и много статей, книг и курсов (платных и бесплатных), из которых можно получить необходимые знания, не всегда просто понять, на изучении каких тем стоит сконцентрироваться.

В этой заметке я поделюсь информацией про то, какие навыки и знания я считаю важными для начинающего iOS разработчика, попробую объяснить зачем они нужны и дам ссылки на материалы для их изучения. 
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments15

PostGIS и JPA

Reading time4 min
Views16K


PostGIS — открытое программное обеспечение, добавляющее поддержку географических объектов в реляционную базу данных PostgreSQL.

В этой небольшой статье будет рассмотрено использование его в Java. В частности — задача нахождения географических объектов по их координатам.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments12

Мессенджер Slack — причины выбора, косяки при внедрении и особенности сервиса, облегчающие жизнь

Reading time13 min
Views73K
После моей статьи на VC про инструменты для командной работы, о которых я бы хотел узнать намного раньше, на меня обрушился шквал уточняющих вопросов. Вопросы были по делу, причём не только в комментариях: мне писали в личку и даже звонили (знакомые).

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

А больше всего вопросов было про Slack. Многие из тех, кто ко мне обращался, до сих пор ведут всю переписку в почте и удивляются, насколько оперативной может быть коммуникация внутри команды и насколько полезна бывает её избыточность (в хорошем смысле слова). Чего уж там: я и сам до поры до времени воспринимал почту как нормальное явление, несмотря на её бесконечные «Fw:Re:Re:Re: Планирование ноябрь 2015».

Сразу оговорка: Slack не идеален. У него есть и плюсы и минусы — просто плюсов, на мой взгляд, значительно больше. Поэтому сейчас для нас это самый оптимальный софт не только для общения, но и для создания полноценной коммуникационной платформы для команды. Про него расскажу подробнее.
Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments11

Насколько безопасно использовать R пакеты для работы с API рекламных систем

Reading time11 min
Views3.8K

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


В этой статье я подробно расскажу о том, как устроен механизм авторизации внутри большинства пакетов и API интерфейсов рекламных сервисов, и о том, как использовать приведённые в статье пакеты максимально безопасно.


image

Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments2

Правдоподобия, P-значения и кризис воспроизводимости

Reading time26 min
Views20K
Или: Как переход от публикации P-значений к публикации функций правдоподобия поможет справиться с кризисом воспроизводимости: личное мнение Элиезера Юдковского.

Если Монро нарисовал комиксы про 75% существующих интересных проблем, а четверть моих статей интересные, то какова вероятность, что рано или поздно мне придётся искать КДПВ где-то ещё?

Комментарий переводчика: Юдковский, автор HPMOR, создатель Lesswrong и прочая и прочая, изложил свою позицию по поводу пользы байесовской статистики в естественных науках в форме диалога. Прямо классический такой диалог из античности или эпохи возрождения, с персонажами, излагающими идеи, обменом колкостями вперемешку с запутанными аргументами и неизбежно тупящим Симплицио. Диалог довольно длинный, минут на двадцать чтения, но по-моему, он того стоит.

Дисклеймеры
  • Этот диалог был написан сторонником байесовского подхода. Реплики Учёного в нижеприведённом диалоге могут и не пройти идеологический тест Тьюринга на фреквентизм. Возможно, что они не отдают должное аргументам и контраргументам сторонников частотного подхода к вероятности.
  • Автор не рассчитывает, что описанные ниже предложения будут приняты широким научным сообществом в ближайшие десять лет. Тем не менее, это стоило написать.

Если вы ещё не знакомы с правилом Байеса, на сайте Arbital есть подробное введение.

Модератор: Добрый вечер. Сегодня в нашей студии: Учёный, практикующий специалист в области… химической психологии или чего-то типа того; его оппонент Байесовец, который намерен доказать, что кризис воспроизводимости в науке можно как-то преодолеть с помощью замены P-значений на что-то из Байесовской статистики…
Студент: Извините, как это пишется?
Модератор:… и, наконец, ничего не понимающий Студент справа от меня.
Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments41

Насколько R быстр для продуктива?

Reading time5 min
Views3.9K

Есть такой популярный класс задач, в которых требуется проводить достаточно глубокий анализ всего объема цепочек работ, регистрируемых какой-либо информационной системой (ИС). В качестве ИС может быть документооборот, сервис деск, багтрекер, электронный журнал, складской учет и пр. Нюансы проявляются в моделях данных, API, объемах данных и иных аспектах, но принципы решения таких задач примерно одинаковы. И грабли, на которые можно наступить, тоже во многом похожи.


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


Является продолжением предыдущих публикаций.

Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments3

Совмещение R и Python: зачем, когда и как?

Reading time16 min
Views34K
dva stula

Наверное, многие из тех, кто занимается анализом данных, когда-нибудь думали о том, возможно ли использовать в работе одновременно R и Python. И если да, то зачем это может быть нужно? В каких случаях будет полезным и эффективным для проектов? Да и как вообще выбрать лучший способ совмещения языков, если гугл выдает примерно 100500 вариантов?

Давайте попробуем разобраться в этих вопросах.
Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments11
1
23 ...

Information

Rating
Does not participate
Registered
Activity