Хотелось бы поделится с вами системой для самообразования, которую я разрабатываю уже в течении ...
Хотелось бы поделится с вами системой для самообразования, которую я разрабатываю уже в течении нескольких лет и которая уже принесла мне
большую огромную пользу. Система представлена в виде веб сайта.
В этой статье вы узнаете, откуда зародились идеи, лежащие в основе IronBrain, как она эволюционировала, как правильно её использовать, а также конкретные практические случаи —
в чём IB может помочь конкретно вам и насколько сильно. Также подробно расскажу, с какими проблемами столкнулся при разработке и как их решал, про некоторые детали технической реализации IB.
Сразу предупреждаю — система нацелена на очень высокий и качественный уровень обучения и
подойдёт далеко не каждому.
P.S.: Проект полностью открытый и свободный, не имеет никакой коммерческой направленности, сделан от души и выложен на ваше рассмотрение — вдруг кому пригодится…
Читать дальше →
подходом к ...
В этой статье хочу познакомить уважаемых читателей с ещё одним
велосипедом подходом к организации асинхронного кода. Сразу оговорюсь, что существует масса решений от лёгких потоков и разных предложений по Promise до самопала под специфические задачи, но я не берусь приводить какие-либо субъективные сравнения, поскольку ни одно из них меня не устроило не только с точки зрения программиста, но и проверяющего код.
FutoIn — с одной стороны, это «клей» из стандартов/спецификаций разных мастей для унификации программных интерфейсов различных существующих проектов по устоявшимся типам, с другой — это концепция для построения и масштабирования компонентов проекта и инфраструктуры, написанных на разных технологиях, без потребности в добавления этого самого «клея».
AsyncSteps — это спецификация и реализация программного интерфейса для построения асинхронных программ в независимости от выбранного языка или технологии.
Цели, поставленные для концепции:
- реализация (с оговорками) должна быть возможна на всех распространённых языках программирования с поддержкой объектов и анонимных функций. Репрезентативный минимум: С++, C#, Java, JavaScript, Lua (не ООП), PHP, Python;
- написанная программа должна легко читаться (сравнимо с классическим вариантом);
- должны поддерживаться исключения языка (Exceptions) с возможностью перехвата и разворачиванием асинхронного стека до самого начала;
- требуется удобство для написания асинхронных библиотек с единым подходом для вызова, возврата результата и обработки ошибок;
- предоставить простой инструмент для естественного распараллеливания независимых веток программы;
- предоставить простой инструмент создания асинхронных циклов с классическим управлением (break, continue) и меткой для выхода из вложенных циклов;
- предоставить место для хранения состояния исполняемой бизнес-логики;
- возможность отменять абстрактную асинхронную задачу, правильно завершая выполнение (освобождая внешние ресурсы);
- возможность легко интегрироваться с другими подходами асинхронного программирования;
- возможность ограничивать время выполнения задачи и отдельно каждой подзадачи;
- возможность создавать модель задачи для копирования (улучшения производительности критичных частей) или использования как объект первого класса для передачи логики в качестве параметра (а-ля callback);
- сделать отладку асинхронной программы максимально комфортной.
Читать дальше →
Вернее, написал SRC - программу для управления версиями отдельных файлов. В 2 тысячи строк на питоне ...
Вернее, написал SRC - программу для управления версиями отдельных файлов. В 2 тысячи строк на питоне.
Интересная штука. Надо ее вместо RCS прикрутить к моей системе бэкапа адресных книг телефонов.
Upd более внимательное расследование показало, что не переписал, а написал обертку. Это гораздо менее интересно.
This entry was originally posted at http://vitus-wagner.dreamwidth.org/1043567.html. Please comment there using OpenID. Now there are comments
Задумался о том, что бы такое использовать для шифрования текстовых файлов на андроиде.
...
Задумался о том, что бы такое использовать для шифрования текстовых файлов на андроиде.
Чтобы по удобству не уступало keepass для паролей. А лучше превосходило.
То есть требования такие
1. Симметричное password-based шифрование с использованием стандартных алгоритмов и форматов. То есть чтобы не нужно было лезть в исходники чтобы понять что это там такое и насколько оно надежное.
2. Чтобы при расшифровании информация показывалась на экране. Меня устроит решение, которое не будет работать ни с с чем, кроме utf-8 текста, но clear text, зашифрованный на десктопе на SD-карту или внутреннюю энергонезависимую память телефона не должен попадать никогда. (это умела еще pgp 2.6.3 даже под однозадачной DOS, но почему-то не умеет APG).
3. Возможность работы с этими файлами в десктопном Linux-е без установки софта, не входящего в дистрибутив. В идеале, конечно, чтобы там CMS EncryptedData использовалось в качестве формата. Тогда его можно будет в vim читать openssl-ем.
4. Чтобы оно не смело по своей инициативе соваться в сеть. Ни рекламы, ни попыток работать с каким-нибудь облачным сервисом.
5. Было бы неплохо если бы андроидное приложение позволяло редактировать текст и сохранять, обратно зашифровав (без промежуточной записи в энергонезависимое хранилище открытого текста). Можно ли без промежуточного сохранения в незашифрованном виде на SD-карту редактировать это в Jota?
Вариации на тему GPG/OpenPGP я уже посмотрел. Пока две - AGP и GnuPG for Android,
Для решения моей задачи они совершенно не приспособлены.
APG прежде чем начать шифровать данные паролем требует сначала создать себе ключевую пару RSA (и энтропию для нее собирает непонятно откуда несколько минут). Ну и не умеет расшифровать файл на экран.
У GnuPG для андороида вообще после штатной установки средствами плеймаркета при запуске начинается невообразимо долгий процесс "Setting Up Gnu Privacy Guard". Правда, дождаться места где можно нажать кнопочку Skip в ответ на предложение создать ключи, мне удалось. При этом похоже, что если в процессе этой операции лочится экран, оно потом начинает заново.
И еще какой-то pinentry daemon запускает. Вообще GnuPG последнее время даже на десктопе онгомел до полной неюзабелности. Ну не имеет права хрень, работающая с ключами и паролями САМОСТОЯТЕНЛЬНО, БЕЗ ВЕДОМА ПОЛЬЗОВАТЕЛЯ, запускать долгоживущие процессы хранящие эти ключи и пароли в памяти. Key Agent штука полезная, но он должен запускаться только явным образом, как в ssh. И ключи в него грузиться выгружаться тоже явным образом, а если ключ явным образом туда грузить не просили (при запуске ssh введнеа пассфраза), он туда попадать и не должен.
В общем, на эти две программы вердикт такой - пользоваться APG -можно. Для выработки и проверки подписи, для шифрования данных пересылаемых по электоронной почте или мессенджерам каким, но не для защиты информации, хранящейся на устройстве. Поставленную мной задачу он не решает. GnuPG под андроид - просто неюзабелен.
Upd Пока лучшее решение из найденных - поставить на телефон полновесный vim и пользоваться его встроенной шифровалкой (:help encryption).
Надо только не полениться в .vimrc написать set cm=blowfish. Потому что cm=zip ломается на современных процессорах в секунды.
This entry was originally posted at http://vitus-wagner.dreamwidth.org/1042064.html. Please comment there using OpenID. Now there are comments
В этой статье как и обящал в 7 лучших инструментов для решения бизнес-задач от бизнес ...