Pull to refresh
15
0
romychs @romychs

User

Send message

Система Оберон, реализованная на доступной FPGA-плате

Reading time 11 min
Views 15K
by Niklaus Wirth
Professor (retired)
Swiss Federal Institute of Technology (ETH)
Zurich, Switzerland

В 1988 году мы с Юргом Гуткнехтом завершили и опубликовали язык программирования Оберон [1, 2], который являлся преемником двух других языков, Паскаля и Модулы-2, разработанных мной ранее. Язык Оберон был спроектирован нами изначально как более рациональный и эффективный, чем Модула-2, что облегчило студентам академической системы образования освоение компьютерной науки. Не останавливаясь на достигнутом, в 1990 году мы построили современную операционную систему (ОС) Оберон для рабочих станций, использующую окна и возможности для обработки текстов. Затем мы опубликовали книгу, раскрывающую детали как компилятора Оберона, так и одноимённой ОС. Книга, названная «Проект Оберон», включала в себя исходные тексты системы.

Несколькими годами позднее мой друг Пол Рид предложил мне издать репринт книги, в силу её значимости для изучения системной архитектуры и дающей хорошую стартовую точку для желающих строить надёжные системы c нуля.
Читать дальше →
Total votes 33: ↑26 and ↓7 +19
Comments 20

Facebook отказывается переносить серверы в страны с нарушением свободы слова и вводит сквозное шифрование

Reading time 3 min
Views 41K
На днях руководитель социальной сети Facebook Марк Цукерберг опубликовал заявление, согласно которому его компания не будет переносить серверы с личными данными пользователей в страны, где регулярно нарушаются права человека или свобода слова. По словам Цукерберга, Facebook вводит новый подход к конфиденциальности информации.

«Пользователи обязаны быть в курсе того, что мы не планируем хранить персональные конфиденциальные данные в странах, где не уделяется должного внимания правам человека, включая праву на личную жизнь и свободу выражения мнений. Делается этого для того, чтобы защитить данные от несанкционированного доступа», — заявил Цукерберг. Список стран при этом не уточняется.
Читать дальше →
Total votes 87: ↑75 and ↓12 +63
Comments 516

Пишем собственную виртуальную машину

Reading time 24 min
Views 53K
В этом руководстве я расскажу, как написать собственную виртуальную машину (VM), способную запускать программы на ассемблере, такие как 2048 (моего друга) или Roguelike (моя). Если вы умеете программировать, но хотите лучше понять, что происходит внутри компьютера и как работают языки программирования, то этот проект для вас. Написание собственной виртуальной машины может показаться немного страшным, но я обещаю, что тема удивительно простая и поучительная.

Окончательный код составляет около 250 строк на C. Достаточно знать лишь основы C или C++, такие как двоичная арифметика. Для сборки и запуска подходит любая Unix-система (включая macOS). Несколько API Unix используются для настройки ввода и отображения консоли, но они не являются существенными для основного кода. (Реализация поддержки Windows приветствуется).

Примечание: эта VM — грамотная программа. То есть вы прямо сейчас уже читаете её исходный код! Каждый фрагмент кода будет показан и подробно объяснён, так что можете быть уверены: ничего не упущено. Окончательный код создан сплетением блоков кода. Репозиторий проекта тут.
Читать дальше →
Total votes 50: ↑50 and ↓0 +50
Comments 28

Граали соревнования Telecom Data Cup. Самое жаркое впереди

Reading time 4 min
Views 6.4K


В начале ноября стартовал чемпионат по машинному обучению и анализу данных под кодовым названием Telecom Data Cup, организаторами которого являются Mail.Ru Group и МегаФон.

Соревнование запущено на уже известной платформе ML Boot Camp. На ней стараемся проводить большинство своих контестов по анализу данных. Это соревнование уже второе по счету в этом году и седьмое за всё время существования проекта. Предыдущие чемпионаты открыты в режиме песочницы, что позволяет вам в любое время дня и ночи тренироваться в решении прошлых заданий.

На текущее соревнование зарегистрировалось свыше 2500 пользователей, 1700 человек скачали датасет, загружено 7800 различных решений, а сообщество в чате перешагнуло отметку в 1600 участников. Завершится соревнование 16 декабря, поэтому пора уже вступать в бойцовский клуб, если вы еще не в нем. Приветствуем и помогаем всем. Кофе или что-то свое собственное и бодрящее вам в помощь :)



В футере статьи вы найдете полезные ссылки и материалы по этому и предыдущим соревнованиям. Главное, что уже сейчас вы погрузитесь в мир задачи Telecom Data Cup, что позволит вам быстро втянуться в процесс и получить удовольствие от настоящих исследований.
Читать дальше →
Total votes 29: ↑28 and ↓1 +27
Comments 7

Мой переезд и работа в Австралии

Reading time 16 min
Views 101K
image

Много было постов про переезд, поросенок Петр не знает покоя в России, решил рассказать про свой опыт переезда и работы в Австралии, может это кому-то будет интересно. Мне тут очень нравится, надеюсь это поможет кому-то найти приятную страну, чтобы осесть, или просто получить клевый опыт работы. Так же думаю, рабочий процесс в моей компании может сподвигнуть кого-то на эксперименты в процессе разработки.

Прошу прощения, что получилось так много и не очень структурировано.
И да, все сказанное ниже является только моим собственным мнением и не является официальным взглядом таких компаний, как SEEK и Jora, это меня мое начальство попросило тут написать.
Читать дальше →
Total votes 112: ↑108 and ↓4 +104
Comments 386

Переносим неэкспортируемые контейнеры Крипто-ПРО

Reading time 2 min
Views 230K
Иногда случается так что необходимо перенести клиент-банк или другое разнообразное бухгалтерское и не очень ПО с одного компьютера на другой. В том случае когда в качестве криптопровайдера выступает СКЗИ Крипто-ПРО обычно проблем не возникает — СКЗИ имеет штатные средства копирования ключей. Но не всегда все гладко — в том случае, когда ключевой контейнер находится в реестре Windows, и при генерации ключа не была выставлена галочка «Пометить ключ как экспортируемый» то при попытке скопировать куда-либо этот ключ Крипто-ПРО будет ругаться и не скопирует ключ.
Из этой ситуации есть очень простой выход — выгружаем ветку реестра HKLM\SOFTWARE\CryptoPro\Settings\Users\{SID}\Keys\(в x64 операционках контейнеры лежат в HKLM\SOFTWARE\Wow6432Node\CryptoPro\Settings\Users\{SID}\Keys\), а на том ПК куда необходимо импортировать смотрим разрядность ОС\SID пользователя, блокнотом правим .reg файл(меняем SID и, если необходимо, путь к конечной ветке), и импортируем его в реестр.
Читать дальше →
Total votes 20: ↑12 and ↓8 +4
Comments 16

Читаем контейнер закрытого ключа КриптоПро средствами OpenSSL

Reading time 8 min
Views 83K
Речь пойдет о файлах primary.key, masks.key и header.key, которые лежат в директории ххххх.000 на флешке. Данные файлы входят в состав криптоконтейнера закрытого ключа электронной подписи криптопровайдера КриптоПро, формат которого нигде не опубликован. Целью данной статьи является чтение контейнера и преобразование закрытого ключа в формат, который может быть прочитан в библиотеке OpenSSL. Долгое время было распространено ошибочное суждение, что достаточно сделать нечто вида (primary_key XOR masks_key) и мы получим закрытый ключ в чистом (raw) виде, однако забегая вперед, можно утверждать, что в КриптоПро было применено более сложное преобразование, в худшем случае состоящее из более чем 2000 (двух тысяч) операций хеширования.

Стоит упомянуть о существовании утилиты P12FromGostCSP которая позволяет конвертировать ключ в формат P12, доступный для работы с OpenSSL, но утилита имеет следующие существенные недостатки:
  • Читает контейнер не напрямую, а через криптопровайдер, поэтому там, где кроме OpenSSL ничего нет, не работает.
  • Если в свойствах ключа не отмечено, что ключ «экспортируемый», то конвертировать его невозможно.
  • В демо версии не формирует файл с ключом, эта возможность присутствует только в платной версии.

Файл primary.key


Содержит 32 байта ключа в формате Asn1. Это только половина ключа, полный ключ получается при делении этого числа по модулю Q на маску. Поле, хранящее модуль Q в библиотеке OpenSSL имеет название order. Маска лежит в файле masks.key:

primary.key
Читать дальше →
Total votes 58: ↑56 and ↓2 +54
Comments 44

Active/Passive PostgreSQL Cluster с использованием Pacemaker, Corosync

Reading time 5 min
Views 25K
image

Описание

В данной статье рассматривается пример настройки Active/Passive кластера для PostgreSQL с использованием Pacemaker, Corosync. В качестве дисковой подсистемы рассматривается диск от системы хранения данных (CSV). Решение напоминает Windows Failover Cluster от Microsoft.

Технические подробности:
Версия операционной системы — CentOS 7.1
Версия пакета pacemaker — 1.1.13-10
Версия пакета pcs — 0.9.143
Версия PostgreSQL — 9.4.6
В качестве серверов(2шт) — железные сервера 2*12 CPU/ 94GB memory
В качестве CSV(Cluster Shared Volume) — массив класса Mid-Range Hitachi RAID 1+0


Подготовка узлов кластера

Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 24

Отказоустойчивый кластер Master-Slave на PostgreSQL

Reading time 9 min
Views 119K
Приветствую, хаброжители!
В этой статье я хочу поделиться опытом развертывания кластера Master-slave на СУБД PostgreSQL. Отказоустойчивость достигается с помощью возможностей pgpool-II (failover, online recovery).
pgpool — это прекрасное средство для масштабирования и распределения нагрузки между серверами и, думаю, немногие знают о возможностях автоматического создания failover на ведомом сервере при отказе ведущего и как добавить новые мощности в уже работающий кластер без отключения всего кластера.
Читать дальше →
Total votes 47: ↑47 and ↓0 +47
Comments 18

Мааааленькая PDF-сборка хардкорных статей про GameDev

Reading time 7 min
Views 44K


Привет!
У издательств я узнал, что с 1 по 10 января люди читают больше, чем за год. Поэтому небольшой подарок от нас — мы договорились с Даниилом Куком (бывшим геймдизайнером Epic Megagames), взяли и перевели несколько его хардкорных материалов про разработку игр. И засунули их в PDF на сотню страниц.

  • Как игры формируются внешней средой: как рынок влияет на сюжет игры (например, из-за уменьшения среднего дохода на игру уменьшается роль открытого мира – слишком долго делать) и так далее. Очень хороший аналитический обзор от гуру с конкретными советами.
  • Организация игровых процессов в многопользовательской игре — как собирать игроков вместе, как делать асинхронные взаимодействия и много чего ещё с числами и примерами. Годный хардкор.
  • ТОП-5 споров о разработке 2014-го года — прошлогодний материал о том, что за тренды обсуждались. Всё актуально и сейчас.
  • Декларация независимости разработчика — американский крик души о том, что «уберите грязные лапы финансового директора от сюжета игры». Ну, примерно.
  • Критика критики игр — что делать, если обзоры пишут дилетанты, и как выделиться из балласта.
  • Создание эффективных причинно-следственных связей в играх — невероятно полезная вещь для всех тех, кто хочет понять, как работают когнитивные схемы игр. Полезна не только разработчикам, но и для UI/UX-спецов.
  • Таблицы трофеев – математика выковыривания лута из трупов врагов. Начинается с ликбеза и стремительно ускоряется до весьма крутых решений.

Вот PDF и полные тексты. Ниже в посте – основные тезисы, если лень читать всё или хочется здесь и сейчас.
Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Comments 8

Еще одно встроенное шпионское приложение обнаружено на компьютерах Lenovo

Reading time 2 min
Views 90K


У восстановленного с завода Thinkpad с предустановленной Windows 7 в планировщике есть приложение, которое включается раз в день и собирает данные о том, как вы используете компьютер. После этого все сведения отправляются компании-аналитику. Информация о сборе данных присутствует в пользовательском соглашении, но зарыта очень глубоко.
Читать дальше →
Total votes 67: ↑66 and ↓1 +65
Comments 77

Последний шанс получить пожизненную Windows 10 Pro без участия в Insider программе

Reading time 3 min
Views 98K
UPD 2016: обновил инструкцию для тех, кто не успел в прошлый раз. image

Как многие знают, незадолго до финального релиза Microsoft сделала предложение всем пользователям Technical Preview присоединится к Insider программе. Подключиться к программе нужно было успеть до 29 июля. Тот поезд ушел. Сейчас поучаствовать в Insider можно только действующим пользователям Windows 10.

Для пользователей Windows 7 и 8 все еще есть бесплатный апгрейд до Windows 10, который действует до 29 июля 2016 года. А как быть остальным? Выход есть, но времени осталось лишь до 1 октября 2015 пока не отключат сервер активации.

image

Сегодня я расскажу, как получить пожизненную Windows 10 Pro, не имея при этом никакой из предыдущих версий Windows.

Бесплатно и без смс
Total votes 40: ↑31 and ↓9 +22
Comments 96

Функциональное программирование должно стать вашим приоритетом №1 в 2015 году

Reading time 7 min
Views 49K

— ООП не сможет больше спасать нас от «Облачных монстров».



Примечание переводчика: Есть два понятия — параллельность (выполнение одновременно, независимо) и конкурентность (выполнение по шагам, поочерёдно, но одновременно несколько задач) и как всегда, мне пришлось поломать голову подобрая правильные термины.

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


Возможно вы уже слышали такое выражение, вроде: “Clojure”, “Scala”, “Erlang” или даже “Java теперь имеет лямбды”. И вы имеете хоть и отдалённое представление о «Функциональном программировании». Если вы участник какого-либа программисткого сообщества, тогда эта тема могла уже вами обсуждаться.

Если вы поищите в Google по словосочетанию «Функциональное программирование», вы не увидите что-то нового. Второй язык из созданных ранее уже охватывает эту тему, он был создан в 50-ых и называется Lisp. Тогда, какого чёрта, эта тема стала популярна только сейчас? Всего то 60 лет спустя?

В начале, компьютеры были очень медленными



Верите вы этому или нет, но компьютеры были нааамного медленнее чем DOM. Нет, действительно. И в то-же время были 2 основные идеи в соглашении по дизайну и реализации языков программирования:



Читать дальше →
Total votes 37: ↑29 and ↓8 +21
Comments 101

Как Windows 10 собирает данные о пользователях

Reading time 5 min
Views 410K


Информация о том, что Windows 10 собирает данные о пользователях, не нова. Еще в 2014 году компания Microsoft опубликовала заявление о конфиденциальности, из которого следует, что на ее серверы может передаваться информация об использованных программах, устройстве и сетях, в которых они работают. Эти данные могут объединяться с идентификатором пользователя (учетная запись Microsoft), также собирается информация об адресе электронной почты, предпочтениях, интересах местоположении, и многом другом.

Чешское издание Aeronet.cz опубликовало расследование неназванного ИТ-специалиста, который решил отследить активность Windows 10 по сбору данных. В ходе исследования использовались следующие инструменты: программа Destroy Windows 10 Spying, блокирующая передачу данных на серверы Microsoft, PRTG Network Monitor, Windows Resource Monitor и Wireshark. По мнению исследователя, Windows 10 — больше похожа на терминал по сбору данных, чем на операционную систему.
Читать дальше →
Total votes 137: ↑123 and ↓14 +109
Comments 581

node.js для Java-разработчиков: первые шаги

Reading time 9 min
Views 93K


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

Ответы на эти вопросы можно при желании легко найти в сети, но придётся перечитать дюжину статей, и на каждый вопрос ответов будет, скорее всего, несколько. Некоторое время назад мне понадобилось написать небольшой туториал по node.js, который бы позволил быстро запустить разработку и познакомить новых программистов в проекте с этой технологией. Рассчитан он на опытных Java-разработчиков, которые и язык JavaScript хорошо знают, но node.js как платформа для бэкэнда для них в новинку.

Думаю, что данная статья будет полезна не только разработчикам из мира Java, но и всем, кто начинает работу с платформой node.js.


Читать дальше →
Total votes 39: ↑26 and ↓13 +13
Comments 107

Слово на букву «М», или Монады уже здесь

Reading time 8 min
Views 42K


Про монаду ходит множество мемов и легенд. Говорят, что каждый уважающий себя программист в ходе своего функционального возмужания должен написать хотя бы один туториал про монаду — недаром на сайте языка Haskell даже ведётся специальный таймлайн для всех отважных попыток приручить этого таинственного зверя. Бывалые разработчики поговаривают также и о проклятии монад — мол, каждый, кто постигнет суть этого чудовища, начисто теряет способность кому-либо увиденное объяснить. Одни для этого вооружаются теорией категорий, другие надевают космические костюмы, но, видимо, единого способа подобраться к монадам не существует, иначе каждый программист не выдумывал бы свой собственный.

Действительно, сама концепция монады неинтуитивна, ведь лежит она на таких уровнях абстракции, до которых интуиция просто не достаёт без должной тренировки и теоретической подготовки. Но так ли это важно, и нет ли другого пути? Тем более, что эти таинственные монады уже окружают многих ничего не подозревающих программистов, даже тех, кто пишет на языках, никогда не считавшихся «функциональными». Действительно, если приглядеться, то можно обнаружить, что они уже здесь, в языке Java, под самым нашим носом, хотя в документации по стандартной библиотеке слово «монада» мы едва ли найдём.

Именно поэтому важно если не постичь глубинную суть этого паттерна, то хотя бы научиться распознавать примеры использования монады в уже существующих, окружающих нас API. Конкретный пример всегда даёт больше, чем тысяча абстракций или сравнений. Именно такому подходу и посвящена эта статья. В ней не будет теории категорий, да и вообще какой-либо теории. Не будет оторванных от кода сравнений с объектами реального мира. Я просто приведу несколько примеров того, как монады уже используются в знакомом нам API, и постараюсь дать читателям возможность уловить основные признаки этого паттерна. В основном в статье пойдёт речь о Java, и ближе к концу, чтобы вырваться из мира legacy-ограничений, мы немного коснёмся Scala.
Читать дальше →
Total votes 43: ↑39 and ↓4 +35
Comments 33

Пишем обертку для FUSE на Java Native Runtime

Reading time 8 min
Views 16K
В статье я расскажу как реализовать файловую систему в юзерспейсе на Java, без строчки ядерного кода. А также покажу как связать Java и нативный код без написания кода на C, при этом сохранив максимальную производительность.



Интересно? Добро пожаловать под кат!
Подробности
Total votes 26: ↑26 and ↓0 +26
Comments 8

Символьный LCD дисплей (Видео урок 1)

Reading time 1 min
Views 54K
image
Всем привет. Решил сделать видео урок по символьному lсd-индикатору в поддержку начинающим программистам микроконтроллеров. Как говорится, лучше один раз увидеть, чем сто раз услышать.

Начинающие в основном используют готовые библиотеки для работы с lcd-индикатором и, конечно же, понятия не имеют, как организован протокол обмена между микроконтроллером и индикатором. А ведь, зная это, можно самому создать программу не хуже, а то и лучше.
Читать дальше →
Total votes 25: ↑19 and ↓6 +13
Comments 16

«Работа инженеров – предъявлять претензии» — Интервью с Сергеем Куксенко из Java Performance Team

Reading time 28 min
Views 19K
Представьте, что вы пришли на встречу JUG.ru или CodeFreeze, или например на джавовскую конференцию, на которой только что выступил Сергей Walrus Куксенко, разработчик из Java Performance Team. И вот, по какой-то причине, все остальные слушатели разбежались, а вы с Сергеем остались один на один. И внезапно, он никуда не торопится, и у него есть свободный час, чтобы ответить на ваши вопросы, коих накопилось великое множество…



Встречайте: сегодня у нас абсолютный эксклюзив — большое интервью с Сергеем Куксенко! Из интервью вы узнаете:
  • как устроена команда Java Performance
  • в каких направлениях Java сейчас ведется активная performance-работа
  • зачем нужен хардкор на джугах и конференциях
  • что должен знать performance-инженер
  • что такое хайлоад, и где проходит граница
  • что прямо сейчас происходит с джавовыми строками
  • в какую сторону эволюционируют тюнинг рантаймов




Читать текстовую версию
Total votes 43: ↑37 and ↓6 +31
Comments 33

Tarantool 1.6 от первого лица

Reading time 3 min
Views 53K
Привет. Это пост о новой версии Тарантула «от автора». Интернет занятно устроен: если поискать про Тарантул, то найдётся статья от 2011 года, о версии 1.3. И ещё какой-то перфоратор, кажется. На форумах-бордах вообще стоит густой туман. Тарантул «ну это как Редис, только»…

Или ещё, недавно сделал для себя открытие, на Тостере кто-то написал «София — это такое append-only хранилище по типу Тарантула». С такими постами я скоро стану фанатом сайта «сделано у нас», автомата Калашникова и Саяно-Шушенской ГЭС. Правда, мне сложно понять, почему мы восхищаемся западными инструментами, при этом представления не имеем о своих. Итак, Tarantool 1.6. В чём фишка?
Читать дальше →
Total votes 96: ↑92 and ↓4 +88
Comments 43

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity