четверг, 21 декабря 2017 г.

Симулятор процессора и его ассемблер

Имеется в виду программная симуляция некоторого гипотетического процессора, которую вы можете построит себе сами. Это напоминает то, что делают полномасштабные симуляторы QEMU или Bochs, но для ... совершенно примитивного процессора со своей собственной ограниченной системой машинных инструкций. Собственно, того прототипа процессора (Y86) что описывается в книге:
Брайант Р., О'Халларон Д., "Компьютерные системы: архитектура и программирование. Взгляд программиста." - БХВ-Петербург, 2005, стр.1090, ISBN: 5-94157-433-9.

(Но если кого заинтересует подобное воссоздание программной модели Y86, то делать это следует не по переводному изданию, которое изобилует ошибками в важных рисунках и схемах, а по оригинальным англоязычным изданиям книги: 2-е издание 2003г. посвящённое 32-бит модели, или 3-е издание 2015г. посвящённое 64-бит модели.)

Всё, что касается создание такой оригинальной модели, см. здесь: симулятор процессора, вплоть до исходных кодов C++ и для 32 и для 64 битовых моделей. Это, конечно, задача учебного уровня, но она:

  • позволяет легко расширить любую функциональность такого процессора (например, добавить стековую машину выполнения вещественных операций);
  • показывает построение ассемблера, соответствующего процессору, используя регулярные выражения C++ (что совсем не так часто можно встретить в примерах);
  • наглядно показывает как строятся симуляторы виртуальных машин, по типу QEMU или Bochs;



среда, 6 декабря 2017 г.

Заметки на тему Python

Я вижу статистику, что достаточно много читаются мои старые заметки по Python, написанные в 2012-2013 годах. Не нужно этого делать!

Ниже выкладываются новые ссылки на существенно переработанный и обстоятельно дополненный единый текст, собирающий всё это вместе.


Номер последней редакции: 1.13 

Объём (страниц): 96 
Размер файла текста: 464109
Размер архива кодов: 353245
Дата создания: 21 ноября 2017


Скачать эту редакцию текст и архив примеров к нему можно:
Yandexтекст и архив 
Googleтекст и архив 



воскресенье, 12 ноября 2017 г.

Python: анализ данных

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

Ещё некоторая значительная часть публикаций и обсуждений, проектов на Python - посвящены написанию системных утилит и инструментов ... чаще это касается операционной системы Linux, да и других UNIX/POSIX систем.

Первая из этих областей меня совершенно "не греет", не интересует от слова "вообще". Вторая - относительно понятна и хорошо описана. Меня же интересуют огромные, на сегодня, возможности инфраструктуры, возникшей вокруг языка Python, применительно к такой области как анализ данных: интерполяция, моделирование, прогнозирование, ... оптимизация функций общего вида (нелинейных) от многих переменных, ортогональные преобразования цифровых последовательностей (таких как быстрое преобразование Фурье, Уолша, или вэёвлет-разложения)...

Такая вот мощь именно Python в областях, в которых традиционно многие годы преуспевали специализированные инструменты, такие как MathCad и MathLab, обеспечивается не столько самим Python, сколько теми пакетами-библиотеками, которыми обросла инфраструктура Python за последние 5-7 лет (всё это достаточно свежие вещи). Но объясняется такое число и разнообразие этих инструментов, несомненно, именно наличием структур данных высокого уровня в языке Python: списки, кортежи, словари, последовательности, отображения и т.д.

P.S. Есть ещё великое множество задач, принадлежащих к этому классу. Их часто в обсуждениях и публикациях относят к области машинного обучения. Но машинное обучение в этом контексте - это, скорее, дань истерической моде, сложившейся в мире к таким вещам как машинное обучение, бигдата и подобным модным вещам.

Я начинаю, в силу определённых обязательств, некоторые работы по использованию Python именно в области анализа данных. И, естественно, анализ данных тут же требует их отображения, что тоже отменно именно в Python. Свои опыты в этом направлении я буду фиксировать в нескольких темах форума - возможно это кому-то пригодится и подскажет очень быстрый путь обработки данных, обладающий чрезвычайно низкой трудоёмкостью для достижения результатов. Вот эти темы:

Python анализ данных
Python: NumPy

Сюда, в текст блога, я не вношу непосредственно эти обсуждения, просто из-за их огромной объёмности.

P.P.S. Обратите внимание! Это идеальные техники для обработки и оформления экспериментальных данных для ваших дипломных или диссертационных работ. 😆

воскресенье, 30 июля 2017 г.

Docker

Docker - это модно!
Docker - это круто!
Это такие ... девизы сегодняшнего дня ... и прочая DevOps галиматья - когда рачительные менеджеры рассчитывают на то, что, вместо программистов с многолетним багажом разработки, создание крутых программных проектов им станут вести слабо образованные системные администраторы...

Но ... внимательно следя за проектами (достаточно родственными) LXC (LinuX Containers) и Docker практически от времени их появления (интересные проекты!), столкнулся с практическим использованием проекта Docker только сейчас... в рамках реального проекта.

Если кого заинтересуют практические детали (тонкости командной строки) экспериментов с Docker, то я свои опыты подробно описываю здесь: Dockerграфические приложения в DockerDocker Compose.

P.S.  Относительно LXC, с которым на сегодня не связан на 100% Docker, но с которого он начался, от которого он стартовал, можете глянуть здесь же: контейнеры LXC, в теме обсуждения, стартовавшем ещё 2 года назад. Представление о LXC не является необходимым для работы с Docker, но многое проясняет в сравнении - возможности LXC во многом могут считаться альтернативой Docker.

суббота, 15 июля 2017 г.

Блокчейн


Блокчейн - слово, термин, которое появилось только 2008 году, а до этого его никто не говорил и не знал. А сегодня число ресурсов по Интернет относительно блокчейн исчисляется десятками тысяч, о нём пишут и переводят с разных языков книги:



Вот из этой книги:
Вполне вероятно, мы находимся на пороге блокчейн-революции. Эта революция началась с появлением новой экономической реальности в интернете – альтернативной валюты под названием биткойн, которая эмитируется и обеспечивается не государством, а пользователями биткойн-сети при автоматизированном достижении консенсуса между ними.
И ещё:
Обладая революционным потенциалом, равным потенциалу интернета, блокчейн-технология будет разворачиваться и внедряться намного быстрее благодаря повсеместной доступности интернета и мобильной связи.
По технологии блокчейн (даже не по биткоин, в среде которого родилась техника блокчейн, а именно блокчейн) - обсуждаем здесь: Блокчейн. Там же вы найдёте ссылки для свободного скачивания вот той 240-страничной книги, которая нарисована выше.

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





Квантовая криптография

Всякие интересные факты относительно квантовой криптографии обсуждаем здесь: Квантовая криптография.

P.S. Если кто сочтёт, что с интересом к этому предмету я сошёл с ума или впал в детство - то это не так: приходите годков так через 3-5, и мы повторно обсудим эту тему.

понедельник, 26 июня 2017 г.

смена хостинга форума rus-linux.net

Форум, который упоминался ранее мной в сообщении Детальные обсуждения, и на котором отрабатывается начерно тот материал, из которого (иногда) создаются тексты, показываемые в этом блоге - меняет свой хостинг (адреc, ссылку, URL). Теперь (пока, по крайней мере) это будет так.

На то есть и некоторые законодательные, юридические основания, и отдельные личные предпочтения организаторов и участников работы этого форума. Если кому это станет интересным, то обсудить это можно вот здесь: Achtung! Achtung! Там же обсуждаем предложения по дальнейшим изменениям и улучшениям внешнего вида и состава форума, которые, несомненно, сейчас последуют.

пятница, 2 июня 2017 г.

Arduino

Для тех, кто не изучал профессионально и специально электронику и программирование, но хотел бы на практике "пощупать" это занятие, такая игрушка как Arduino - наилучшая выдумка: можно за $10, или около того, построить у себя на письменном столе стенд, на котором испытывать довольно замысловатые устройства.

Подробнее о том: где что взять и как что сделать - обсуждаем здесь: Arduino.

Это отличное хобби и времяпрепровождение ... в свободное от работы время. Увлекательная забава. Это то, чем было лет 40 назад такое занятие как радиолюбительство ... которое с того времени практически потеряло свой смысл.

суббота, 27 мая 2017 г.

Язык программирования Kotlin

Достаточно интересный новый (2011г.) язык Kotlin, идущий на смену Java. Моё внимание на него обратили ex-сотрудники моего отдела (когда-то), ныне благополучно пребывающие в Канаде. Вряд ли необходимость замены Java и появление Kotlin было необходимо, целесообразно и объяснимо ... если бы не Android. 😆

Начальное знакомство и обсуждения относительно Kotlin будут мною размещаться в несколько (после 03.06.2017) тем здесь:
Kotlin - это всё, что касается самого инструментария: где взять, как установить, как начать использовать, где искать документацию, новинки версий...;
код Kotlin & Java - здесь обсуждение (на конкретных примерах кода) синтаксиса и семантики языка (для сравнения с Java, поскольку Kotlin продолжает и расширяет Java);
Вот уже 2 большие темы обсуждений сложились вокруг языка Kotlin. Не исключено, что их число, по мере наполнения, будет увеличиваться.
Потом, возможно, это сложится во внятный текст с описанием использования языка (как было с Go) ... если подберётся достаточно материала, не угаснет интерес, и будет у меня достаточно на то времени.

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

Я уже показывал здесь, в блоге, ссылку на текст Сравнительное обозрение языков программирования, где сравниваются реализации одной и той же задачи, выполненные на 15 языках программирования. Теперь к ним предстоит присовокупить и Kotlin. 😆
P.S. К 02.06.2017 такой 16-й вариант уже сделан и представлен (в темах, ссылки на которые показаны выше).

Активные ресурсы Kotlin на сегодня:

Руководство по языку Kotlin - здесь формируется (заканчивается) перевод оригинальной документации Kotlin (от разработчика, JetBrains).

- Русскоязычный канал официального чата JetBrains по языку Kotlin в корпоративном мессенджере Slack (нужно зарегистрироваться и получить инвайт).



пятница, 12 мая 2017 г.

Go конспект: дополнения и обсуждения

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

Во-первых, на одной и той же страничке блога, если кто не обратил на это внимания, обновляется редакция выложенного материала, но делается это потихоньку ... "втихаря", чтобы не создавать новые сообщения по каждому чиху. На сегодня там лежит редакция от 17 апреля 2017 ... согласитесь, это достаточно свежая версия (правда, правки этой редакции, главным образом стилистические и синтаксические).

Во вторых, именно в несколько последних дней активизировались обсуждения, связанные с разными нюансами построения приложений на Go. Но это всё - обсуждения больше технологии, реализаций, приёмов использования компилятора Go (да и вообще инструментов), но к самому языку это имеет очень косвенное касательство. Так что вносить это в конспект по языку я, пока, не считаю целесообразным. Но там выплывает множество интересных подробностей и всяких мелочей, связанных с последними версиями инструментария. Так что все интересующиеся Go могут с любопытством следить ... и поучаствовать в обсуждениях здесь:

Инструменты Go
cборка приложений Go
GUI на Go
Примеры кода Go
alternatives
редкие полезные команды
Go


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

Предупреждение: это всё форумные обсуждения, многостраничные, не упорядоченные, ... "взлохмаченные", начатые (некоторые из них) не один год назад. Поэтому читать эти форумные обсуждения лучше начинать лучше с конца.

воскресенье, 7 мая 2017 г.

лицензия Creative Commons Attribution ShareAlike

Все заметки (тексты, программные коды) ниже были представлены под лицензией Creative Commons Attribution ShareAlike. Которая требует некоторых разъяснений и ссылок:

Во-первых, я бы вообще не заморачивался с лицензиями, если бы читатели этих заметок прошлых лет (и не один, а несколько) не обращались с вопросами о том, под какой лицензией представлены эти материалы и не советовали явно указать вид лицензии. И выбор был остановлен на лицензии Creative Commons Attribution ShareAlike.

Во-вторых, на текст этой лицензии (русский перевод) есть не раз ссылки внутри сообщений блога, но ... эти ссылки умерли, домены распродаются ... а выискивать и править ссылки по старым сообщениям, 5-летней и более давности, у меня определённо нет никакого желания.

Лицензия Creative Commons Attribution ShareAlike - это лицензия "общественное достояние" и "атрибуция - на тех же условиях". Ссылка на перевод на русский с английского и перевод с юридического на человеческий - здесь: Атрибуция - на тех же условиях.
Логотип лицензии "общественное достояние" выглядит примерно так:
 




Почему такая лицензия, а не свободная лицензия MIT, BSD, или Apache (из числа "самых" свободных)? Только потому, что эти свободные лицензии в большей мере применимы к программному коду, а Creative Commons распространяется так еж и на тексты публикаций. Creative Commons — лицензия, которая пытается перевести проект в общественное достояние в максимальной форме, разрешенной законом. А если закон не позволяет это совершить, автоматически применяет положения разрешительной лицензии.

Что вы можете согласно этой лицензии? (цитирую по ссылке выше):
Вы можете свободно:
Делиться (обмениваться) — копировать и распространять материал на любом носителе и в любом формате
Адаптировать (создавать производные материалы) — делать ремиксы, видоизменять, и создавать новое, опираясь на этот материал для любых целей, включая коммерческие.
Что вы обязаны соблюдать при этом?:
«Attribution» («Атрибуция») — Вы должны обеспечить соответствующее указание авторства, предоставить ссылку на лицензию, и обозначить изменения, если таковые были сделаны. Вы можете это делать любым разумным способом, но не таким, который подразумевал бы, что лицензиар одобряет вас или ваш способ использования произведения.
«ShareAlike» («На тех же условиях») — Если вы перерабатываете, преобразовываете материал или берёте его за основу для производного произведения, вы должны распространять переделанные вами части материала на условияхтой же лицензии, в соответствии с которой распространяется оригинал.





суббота, 6 мая 2017 г.

Интерпретатор программного кода

Вот такая вот учебная, но отнюдь не простая задачка: написать  интерпретатор программных кодов, написанных на максимально упрощённом C-подобном языке.

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

Я предполагаю написать это на C++. Такая задача куда проще решалась бы на ... скажем, Python ... или Lisp, Ocaml и т.д. Но ... "мы не ищем лёгких путей" 😉 - пусть будет C++.

Но не исключено, что в какой-то момент мне это наскучит 😉 ... и я продолжу делать то же на Python...

Развитие проекта, по ходу его рождения, описывается здесь: интерпретатор программного кода (на C++). Там уже есть готовый код работающего интерпретатора, который можно взять, скомпилировать и наслаждаться... : экспериментировать, вносить изменения.

А основная (и, как понимаете, самая сложная в реализации) часть - вычисление выражений - здесь: обратная польская запись. Там планируется параллельно рассмотреть 2 альтернативные реализации: а). метод рекурсивного спуска и б). алгоритм сортировочной станции Э.Дейкстры (как заметно чаще более известный). Пока представлен только 1-й из них ... именно как менее известный. 😉

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

P.S. Всё это предоставляется под лицензией "Общественное достояние - на тех же условиях" (Creative Commons Attribution ShareAlike), см. Attribution-ShareAlike.

P.S. Там после 09.05.2017 (с Днём Победы! 😉) существенные расширения: для лексического разбора и трансляции операторов языка применены регулярные выражения в C++, использование которых ранее детально описывались в публикации Регулярные выражения C/C++.

 

вторник, 11 апреля 2017 г.

Задачи по программированию на языке C++, часть 2 (обновление)

Значительное дополнение, обновление и исправление текста и примеров кода для задачника по языку C++.

Скачать свободно последнюю актуальную редакцию текста и архива кодов можно здесь:
Googleтекст, архив кодов
Сейчас это редакция 48 от 11.04.2017, страниц 110.
Задач с примерами на сегодня представлено 66 (хотя посчитать это достаточно проблематично, поскольку ряд задач имеет по несколько представленных вариантов решений).

Дополнения (относительно первоначальных редакций) весьма обстоятельные: по сравнению с предыдущей выложенной версии текст увеличился на 20 стр. (+22%), а число задач увеличено на 10.



суббота, 1 апреля 2017 г.

Документация systemd

Начало публикаций в этом блоге положило (октябрь 2012г.) обсуждение и описание некоторых сторон использования новой системы инициализации Linux systemd. К тому времени сам systemd был сделан Леннартом Поттерингом в самом зачаточном виде, с минимумом тех возможностей, которые реализованы в systemd на сегодня (больше было на уровне обещаний, чем реализаций). О документации тогда говорить не приходилось вообще, а сведения какие-то приходилось черпать из оригинальных "горячих" заметок (очень рваных) из блога самого Леннарта Поттеринга. Отсюда и появились заметки о systemd в 6-ти частях в этом блоге. 

По статистике посещений я вижу, что и до сейчас эти заметки о systemd достаточно активно читаются (например, часть 2 прочитана больше 2000 раз). Но на сегодня это достаточно бессмысленно! Потому что есть объёмное и постоянно обновляемое руководство по systemd, непосредственно от разработчика проекта Леннарта Поттеринга, и есть регулярно обновляемый перевод этого руководства, поддерживаемый Сергеем Пташником. Вот этим руководством и следует пользоваться (это то, что можно считать уровнем документации)!

Это руководство (PDF) свободно доступно здесь (обратите внимание на дату):
  
systemd для администраторов
Lennart Poettering (автор)
Сергей Пташник (русский перевод)
28 октября 2017 г.
129 стр.     

Благодарите переводчика! 😃
P.S. Очень советую сохранять (периодически) копию этой документации, а не пользоваться ней онлайн (доступность там не всегда на 100% гарантирована).

Детальные обсуждения

По поводу тем, затронутых ранее в размещённых публикациях, многие задают и пишут вопросы, уточнения. Часть из них достаточно любопытны. И сами темы могли бы поиметь интересные и неожиданные продолжения... Но править по любому чиху большой текст - накладно ... да и неразумно, потому что назавтра, возможно, нужно будет править всё обратно. 😠

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




Сам по себе, это один из старейших и обстоятельнейших русскоязычных ресурсов по Linux - на нём регулярно, с частотой в 2-3-4 дня размещаются переводы актуальных статей по администрированию и программированию. Но для обсуждений имеется в виду форум этого сайта. Форум этот можно найти по по адресу. Присоединяйтесь к обсуждениям!



вторник, 31 января 2017 г.

Прочь, малолетние хакеры!



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

Появился замысел, на основе анализа хакерских ресурсов и описываемого инструментария, подготовить обстоятельный обзор средств противодействия хакерской активности, инструментов и методик анти-хакинга. Возможно это будет брошюра, возможно небольшая книга ... под рабочим названием "Прочь, малолетние хакеры!" 😃

Предварительно состояние дел можно будет видеть здесь: Прочь,малолетние хакеры! Зачем я загодя показываю ссылку на совершенно сырой материал ... из которого может вообще ничего не получиться, который не завершится? Только потому, что тематика эта вызывает многочисленные отклики, а ещё больше - вопросы. И эти вопросы, точнее ответы на них, могут быть включены в структуру текста.



А ещё потому, что большинство так называемых "крутых хакеров" и их ресурсов в Интернет - это пустое место! ... В смысле мозгов, умений и бахвальства на ровном месте. И об этом тоже стоит говорить. А ресурсы такие при любом удобном случае - гнобить и подавлять.




Как всегда (в моих заметках), всё рассмотрение и обсуждение относится только к операционной системе Linux и, отчасти, к другим UNIX-подобным системам. К Windows это не относится, и на Windows могут быть перенесены только сами общие идеи, по аналогии.

Собственно, интерес и деятельность в этом направлении началась давно... Некоторые соображения, из сформулированных ранее, можете глянуть здесь: То,чего вам никто не говорил про хакеров... Начав систематизировать материалы по безопасности, убеждаюсь, что то, что житейски, в обиходе называют "безопасность" - отчётливо разделяется на 2 разных, и даже противоположных понятий: «безопасность от» и «безопасность для». Первое — это вопросы защиты от не предусмотренного стороннего вторжения в информационную систему … со стороны недоброжелателей: хакеров (доморощенных и неграмотных, чаще всего), обиженных и уволенных сотрудников алчущих мести, мошенников разного рода, спамеров, рекламных агентов и др. придурков. Второе — предусматривает охранение личного пространства, персональной информации от отдельных лиц (тех же спамеров с мошенниками), IT корпораций (Microsoft, Google, FaceBook, Amazon и т.д.), государственных органов и спецслужб (ФСБ, СБУ, АНБ, Госдепартамент … принадлежность их не имеет значения), общественных организаций и «доброжелателей» (разнообразные экологи с зелёными, голубые с розовыми, ювенальная юстиция и т.п.). Так что писать придётся, похоже, 2 описания. 

P.S. За время с создания этой заметки много материалов добавилось в тему...
- Написаны заметки ... с одноимённым названием: Прочь малолетние хакеры! (по ссылке свободное скачивание) - 20 страниц об обеспечении вашей безопасности;
- Создан целый подфорум Безопасность, где самые различные темы обсуждений: от антихакинга до говнодоменов (gTLD домены) откуда вас заваливают спамом;