Читать дальше →
Alexander Stellove @AlLSTLread-only
Software Engineer
+10
Разработка сервисов и IaaS: подборка материалов об облаке, хранении данных и эволюции «1cloud»
4 min
2.4KРазбираемся с законом о ПД, рассказываем, как эволюционировала инфраструктура 1cloud.ru, обсуждаем изменения в политиках ИТ-компаний и развитие облачных экосистем.
+9
Почитать на выходных: подборка материалов об истории DNS, регулировании ИТ и железе 1cloud.ru
3 min
4.5K+13
Еще один шаг к оптическим компьютерам
3 min
5.5KМы уже рассказывали об инженерах из Бристоля, которым удалось телепортировать фотон с одного чипа на другой. Сегодня продолжаем тему — поговорим о технологии, которая позволит строить оптические каналы передачи данных на кремниевых чипах и продлит действие закона Мура.
Что еще у нас есть на Хабре: новая лицензия для приложений в Open Source Initiative.
Что еще у нас есть на Хабре: новая лицензия для приложений в Open Source Initiative.
+10
+13
Какие есть открытые ОС для сетевого оборудования
3 min
9.3KНа днях мы обсудили, как госучреждения в Европе переходят на открытое ПО. Теперь расскажем, кто делает что-то подобное на уровне ИТ-инфраструктуры — на примере пары открытых ОС.
+4
Книга «Паттерны проектирования для C# и платформы .NET Core»
11 min
17K Привет, Хаброжители! Паттерны проектирования — удобный прием программирования для решения рутинных задач разработки ПО. Грамотное использование паттернов позволяет добиться соответствия любым требованиям и снизить расходы. В этой книге описаны эффективные способы применения паттернов проектирования с учётом специфики языка C# и платформы .NET Core.
Кроме знакомых паттернов проектирования из книги «Банды четырех» вы изучите основы объектно-ориентированного программирования и принципов SOLID. Затем узнаете о функциональных, реактивных и конкурентных паттернах, с помощью которых будете работать с потоками и корутинами. Заключительная часть содержит паттерны для работы с микросервисными, бессерверными и облачно-ориентированными приложениями. Вы также узнаете, как сделать выбор архитектуры, например микросервисной или MVC.
Кроме знакомых паттернов проектирования из книги «Банды четырех» вы изучите основы объектно-ориентированного программирования и принципов SOLID. Затем узнаете о функциональных, реактивных и конкурентных паттернах, с помощью которых будете работать с потоками и корутинами. Заключительная часть содержит паттерны для работы с микросервисными, бессерверными и облачно-ориентированными приложениями. Вы также узнаете, как сделать выбор архитектуры, например микросервисной или MVC.
+5
.NET Core на Linux, DevOps на коне
14 min
26KМы развивали DevOps как могли. Нас было 8 человек, и Вася был самым крутым по Windows. Внезапно Вася ушел, а у меня появилась задача вывести новый проект, который поставляет Windows-разработка. Когда я высыпал на стол весь стек Windows-разработки, то понял, что ситуация — боль…
Так начинается история Александра Синчинова на DevOpsConf. Когда из компании ушел ведущий специалист по Windows, Александр задался вопросом, что теперь делать. Переходить на Linux, конечно же! Александр расскажет, как ему удалось создать прецедент и перевести часть Windows разработки на Linux на примере реализованного проекта на 100 000 конечных пользователей.
Как легко и непринужденно доставлять проект в RPM, используя TFS, Puppet, Linux .NET core? Как поддерживать версионирование БД проекта, если разработка впервые слышит слова Postgres и Flyway, а дедлайн послезавтра? Как интегрировать с Docker? Как мотивировать .NET-разработчиков отказаться от Windows и смузи в пользу Puppet и Linux? Как решать идеологические конфликты, если обслуживать Windows в продакшн нет ни сил, ни желания, ни ресурсов? Об этом, а также о Web Deploy, тестировании, CI, о практиках использования TFS в существующих проектах, и, конечно, о сломанных костылях и работающих решениях, в расшифровке доклада Александра.
Так начинается история Александра Синчинова на DevOpsConf. Когда из компании ушел ведущий специалист по Windows, Александр задался вопросом, что теперь делать. Переходить на Linux, конечно же! Александр расскажет, как ему удалось создать прецедент и перевести часть Windows разработки на Linux на примере реализованного проекта на 100 000 конечных пользователей.
Как легко и непринужденно доставлять проект в RPM, используя TFS, Puppet, Linux .NET core? Как поддерживать версионирование БД проекта, если разработка впервые слышит слова Postgres и Flyway, а дедлайн послезавтра? Как интегрировать с Docker? Как мотивировать .NET-разработчиков отказаться от Windows и смузи в пользу Puppet и Linux? Как решать идеологические конфликты, если обслуживать Windows в продакшн нет ни сил, ни желания, ни ресурсов? Об этом, а также о Web Deploy, тестировании, CI, о практиках использования TFS в существующих проектах, и, конечно, о сломанных костылях и работающих решениях, в расшифровке доклада Александра.
+39
Загрузка ОС на ARM
11 min
68KНедавно попросили в двух словах рассказать серьезным людям о загрузке операционной системы на ARM и дать оценку угроз безопасности этого процесса. Вообще ARM-процессоров и вообще ОС. Вы понимаете, все ведь слышали про эти ARM, и что такое ОС тоже все знают. Желательно, на уровне квадратиков со стрелками.
Загрузка ARM в четырех прямоугольниках — под катом.
Загрузка ARM в четырех прямоугольниках — под катом.
+34
Поднимаем SOC: ARM + FPGA
14 min
107KTutorial
На днях ко мне в руки попала EBV SoCrates Evaluation Board. В двух словах — это плата с SoC от фирмы Altera, на борту которой есть двухъядерный ARM и FPGA Cyclone V.
ARM и FPGA на одном чипе — это должно быть очень интересно! Но для начала всё это добро нужно «поднять».
Об этом процессе я и поведаю в данной статье.
Если вам в руки попала такая или подобная плата и вы не до конца уверены, что же с ней нужно делать. Если вы всегда думали, что FPGA — это что-то сложное и непонятно, как к этому подступиться. Или вы просто любопытный инженер. Тогда заходите. Мы всем рады.
А в качестве маленького бонуса измерим пропускную способность между CPU и FPGA.
+56
Шлюзы промышленных протоколов обмена на Linux. Собери сам
4 min
18KЯ занимаюсь разработкой, внедрением и эксплуатацией систем автоматического управления технологическими процессами (АСУ ТП). Поначалу работал со SCADA-системами. Потом довольно быстро переключился на работу с протоколами обмена промышленных устройств. Как самостоятельное написание драйверов, так и настройка систем сбора данных. В настоящий момент моя работа проходит атмосфере Modbus-ов, МЭКов-101/104-х, ОРС и прочих протоколов.
Рис. 1. Многообразие протоколов обмена, используемых в АСУ ТП
Рис. 1. Многообразие протоколов обмена, используемых в АСУ ТП
+14
Пишем собственную виртуальную машину
24 min
54KTutorial
Translation
В этом руководстве я расскажу, как написать собственную виртуальную машину (VM), способную запускать программы на ассемблере, такие как 2048 (моего друга) или Roguelike (моя). Если вы умеете программировать, но хотите лучше понять, что происходит внутри компьютера и как работают языки программирования, то этот проект для вас. Написание собственной виртуальной машины может показаться немного страшным, но я обещаю, что тема удивительно простая и поучительная.
Окончательный код составляет около 250 строк на C. Достаточно знать лишь основы C или C++, такие как двоичная арифметика. Для сборки и запуска подходит любая Unix-система (включая macOS). Несколько API Unix используются для настройки ввода и отображения консоли, но они не являются существенными для основного кода. (Реализация поддержки Windows приветствуется).
Окончательный код составляет около 250 строк на C. Достаточно знать лишь основы C или C++, такие как двоичная арифметика. Для сборки и запуска подходит любая Unix-система (включая macOS). Несколько API Unix используются для настройки ввода и отображения консоли, но они не являются существенными для основного кода. (Реализация поддержки Windows приветствуется).
Примечание: эта VM — грамотная программа. То есть вы прямо сейчас уже читаете её исходный код! Каждый фрагмент кода будет показан и подробно объяснён, так что можете быть уверены: ничего не упущено. Окончательный код создан сплетением блоков кода. Репозиторий проекта тут.
+50
Какие решения есть у Ростелекома для IIoT
8 min
8.2KПривет!
Недавно мы вместе с Geekbrains провели хакатон, посвященный индустриальному интернету вещей IIoT и теперь начинаем выкладывать серию интервью с нашими экспертами. Первое из них — беседа с Николаем Шевалье, главным архитектором проектного офиса «Индустриальный интернет вещей» Ростелекома.
Николай расскажет, что же такое индустриальный интернет вещей и чем он отличается от привычного IoT, а также про решения, которые уже есть у Ростелекома.
Под катом — о роли IIoT в автоматизации систем ЖКХ, сельского хозяйства, умных офисов и многое другое.
Недавно мы вместе с Geekbrains провели хакатон, посвященный индустриальному интернету вещей IIoT и теперь начинаем выкладывать серию интервью с нашими экспертами. Первое из них — беседа с Николаем Шевалье, главным архитектором проектного офиса «Индустриальный интернет вещей» Ростелекома.
Николай расскажет, что же такое индустриальный интернет вещей и чем он отличается от привычного IoT, а также про решения, которые уже есть у Ростелекома.
Под катом — о роли IIoT в автоматизации систем ЖКХ, сельского хозяйства, умных офисов и многое другое.
+14
15 когнитивных искажений
9 min
179KЛюди сталкиваются с большим объёмом информации, часть из которой достоверна, а часть освещает интересующую область односторонне, а иногда и сознательно искажённо.
Эта статья о том, как отличать достоверную информацию от искажённой, и о том, как правильно подавать информацию, чтобы убедить других людей.
Начнём с того, что люди не всегда мыслят рационально. Это данность, которая обусловлена принципами работы нашего интеллекта, выработанными в процессе эволюции. Условно, представим разум, разделённый на две Системы. Устройство разума не так однозначно, но описанное упрощение позволит понять причины искажений. Первая система генерирует решения и гипотезы быстро «если коснёмся горячего предмета, то отдёрнем руку». Вторая, принимает решения путём логических рассуждений. Первая Система генерирует гипотезы, а вторая принимает их или отвергает. Такой способ мышления медленный и энергозатратный. Логическое рассуждение используется людьми реже и требует больших усилий. Это причина большинства когнитивных искажений.
Так, галочка «по умолчанию согласен» позволила увеличить количество согласных на донорство до 86% в Швеции, тогда как в Дании, где при получении прав нужно самостоятельно ставить согласие, т. е. принимать осознанный выбор, количество согласных на донорство 4%.
Эта статья о том, как отличать достоверную информацию от искажённой, и о том, как правильно подавать информацию, чтобы убедить других людей.
Начнём с того, что люди не всегда мыслят рационально. Это данность, которая обусловлена принципами работы нашего интеллекта, выработанными в процессе эволюции. Условно, представим разум, разделённый на две Системы. Устройство разума не так однозначно, но описанное упрощение позволит понять причины искажений. Первая система генерирует решения и гипотезы быстро «если коснёмся горячего предмета, то отдёрнем руку». Вторая, принимает решения путём логических рассуждений. Первая Система генерирует гипотезы, а вторая принимает их или отвергает. Такой способ мышления медленный и энергозатратный. Логическое рассуждение используется людьми реже и требует больших усилий. Это причина большинства когнитивных искажений.
Так, галочка «по умолчанию согласен» позволила увеличить количество согласных на донорство до 86% в Швеции, тогда как в Дании, где при получении прав нужно самостоятельно ставить согласие, т. е. принимать осознанный выбор, количество согласных на донорство 4%.
+61
Как я проработала 3 месяца в Я.Маркете и уволилась
6 min
301KПервая попытка
Все началось с того, что я люблю ходить по конференциям и частенько хожу на них в Яндекс, Mail.ru и другие крупные компании. Однажды мне написал HR из Яндекса и попросила сделать тестовое на стажера фронтенд-разработчика.
Я его сделала, вот оно. По условию оно должно было работать на айфонах и андроидах, поэтому я проверила его в Browser Stack и дописала пару префиксов и css-стилей.
Через какое-то время поняла, что не хочу быть стажером, имея несколько лет опыта за плечами и зааплаилась в Я.Маркет через форму на их сайте.
Мне позвонила HR и предложила пройти скайп-интервью с лайвкодингом. Перед собеседованием я повторила структуры данных, сложность алгоритмов, сортировки. Тогда я еще не знала, что этого недостаточно.
На интервью я не смогла решить алгоритмические задачки, не знала внутренности JS и меня сбрили.
Это задело мою самооценку и весь следующий год параллельно с работой я учила JS на глубоком уровне и решала задачки на codewars. Здесь можно оценить мой прогресс.
+619
DevBoy — как я создал проект устройства с открытым исходным кодом и запустил проект на Kickstarter
3 min
45KRecovery Mode
Привет, друзья!
Меня зовут Николай, читателем Хабра являюсь давно, а вот с написанием статей как-то не сложилось. Пора исправлять эту ситуацию, тем более что как раз имеется повод — только что я запустил компанию на Kickstarter для реализации устройства с открытым исходным кодом.
Кому интересно — прошу под кат.
Меня зовут Николай, читателем Хабра являюсь давно, а вот с написанием статей как-то не сложилось. Пора исправлять эту ситуацию, тем более что как раз имеется повод — только что я запустил компанию на Kickstarter для реализации устройства с открытым исходным кодом.
Кому интересно — прошу под кат.
+138
Парсинг JSON — это минное поле
25 min
155KTranslation
JSON — это стандарт де-факто, когда заходит речь о (де)сериализации, обмене данными в сети и мобильной разработке. Но насколько хорошо вы знакомы с JSON? Все мы читаем спецификации и пишем тесты, испытываем популярные JSON-библиотеки для своих нужд. Я покажу вам, что JSON — это идеализированный формат, а не идеальный, каким его многие считают. Я не нашёл и двух библиотек, ведущих себя одинаково. Более того, я обнаружил, что крайние случаи и зловредная полезная нагрузка могут привести к багам, падениями и DoS, в основном потому, что JSON-библиотеки основаны на спецификациях, которые со временем развиваются, что оставляет многие вещи плохо или вообще не задокументированными.
Содержание
1. Спецификации JSON
2. Тестирование парсинга
2.1. Структура
2.2. Числа (Numbers)
2.3. Массивы
2.4. Объекты
2.5. Строки
2.6. Двойственные значения RFC 7159
3. Архитектура тестирования
4. Результаты тестирования
4.1. Полные результаты
4.2. C-парсеры
4.3. Objective-C-парсеры
4.4. Apple (NS)JSONSerialization
4.5. Freddy (Swift)
4.6. Bash JSON.sh
4.7. Другие парсеры
4.8. JSON Checker
4.9. Регулярные выражения
5. Контент парсинга
6. STJSON
7. Заключение
8. Приложение
2. Тестирование парсинга
2.1. Структура
2.2. Числа (Numbers)
2.3. Массивы
2.4. Объекты
2.5. Строки
2.6. Двойственные значения RFC 7159
3. Архитектура тестирования
4. Результаты тестирования
4.1. Полные результаты
4.2. C-парсеры
4.3. Objective-C-парсеры
4.4. Apple (NS)JSONSerialization
4.5. Freddy (Swift)
4.6. Bash JSON.sh
4.7. Другие парсеры
4.8. JSON Checker
4.9. Регулярные выражения
5. Контент парсинга
6. STJSON
7. Заключение
8. Приложение
+158
JSON и XML. Что лучше?
8 min
215KTranslation
Примечание: ниже перевод обзорной статьи «JSON vs XML», посвященной JSON и его сравнению с XML по ряду критериев. Публикуется в целях популяризации JSON среди читателей Хабрахабра.
JSON — Википедия
Что является правильным форматом ответа на
Итак, критерии следующие.
JSON (англ. JavaScript Object Notation) — формат обмена данными, легко читаем людьми, легко обрабатывается и генерируется программами.
Основан на подмножестве языка JavaScript, Standard ECMA-262 3rd Edition — декабрь 1999.
JSON — Википедия
Что является правильным форматом ответа на
XMLHttpRequest
в AJAX-приложениях? Для большинства приложений, основанных на разметке, ответ будет простым — (X)HTML. Для информационно-ориентированных приложений выбор будет лежать между XML и JSON. До недавнего времени я не сильно задавался вопросом, что лучше использовать, XML или JSON. Я просто предполагал, что в каждом конкретном случае стоит выбирать наиболее подходящий формат, и все. Но недавно мне довелось проверить на практике этот подход. В этой заметке я опишу критерии, по которым проводил сравнение между XML и JSON, и собственные умозаключения.Итак, критерии следующие.
- Удобочитаемость кода.
- Простота создания объекта данных на стороне сервера.
- Простота обработки данных на стороне клиента.
- Простота расширения.
- Отладка и исправление ошибок.
- Безопасность.
+29
LittleFS – компактная и экономичная файловая система для ARM микроконтроллеров в составе mbed os. Быстрый старт
10 min
17K В декабре 2017 года компания ARM представила обществу новую версию операционной системы для ARM микроконтроллеров «arm mbed os v.5.7» (17 января 2018 вышла версия 5.7.3), которая получила в своем составе интегрированную авторскую файловую систему, незатейливо названную «LittleFileSystem», или просто «LittleFS». Предлагаю сегодня поговорить об этой новинке.
+14
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity