Search
Write a publication
Pull to refresh
145
10.9
Александр Рябиков @rsashka

Системный архитектор

Send message

Руководство по CMake для разработчиков C++ библиотек

Reading time18 min
Views109K

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

Читать далее

История одного перехода с gcc на clang

Reading time5 min
Views13K


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

Данная статья описывает причины смены компилятора, некоторые особенности этого процесса, проблемы, которые приходилось решать и итоговые выводы.

Автор надеется, что эта информация может оказаться полезной и позволит сэкономить кучу времени, если заранее знать некоторые подводные камни, а так же положительные стороны от перехода на clang.
Читать дальше →

Релиз языка программирования NewLang 0.2

Reading time5 min
Views8.4K

image


NewLang — это язык программирования высокого уровня в котором можно сочетать стандартные алгоритмические конструкции с декларативным программированием и тензорными вычислениями для задач машинного обучения.


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


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

Читать дальше →

Как найти новую IT-команду и платить зарплаты из-за рубежа?

Reading time3 min
Views7.2K

Если кратко — через посредника.

Новая реальность в том, что 9 из 10 компаний будет работать за рубежом. Как теперь искать сотрудников и платить им зарплату из-за рубежа? Расскажем, как наш сервис выручит в текущих условиях.

Читать далее

Радикальная удалёнка… налоговый рай архипелаг Свальбард

Reading time4 min
Views36K

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

Lat oss gå (поехали)!!

Релиз языка программрования NewLang

Reading time21 min
Views13K

КДПВ


NewLang — это язык программирования высокого уровня, в котором можно сочетать стандартные алгоритмические конструкции с декларативным программированием и тензорными вычислениями для задач машинного обучения.


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


Новое по сравнению с прошлым выпуском:


  • Реализованы все основные алгоритмические конструкции: проверка условий, различные варианты циклов, сравнение по образцу, прерывание последовательности команд и возврат данных, обработка ошибок и т.д.
  • Переработан основной синтаксис для отдельных языковых конструкций.
  • Реализованы большинство операций с переменными, включая операторы раскрытие списков и тензоров.
  • Серьезно переработана система встроенных типов, реализованы функции для их преобразования и для определения данных (последнее можно назвать data comprehensions).
  • Добавлены новые тесты и пр.
Читать дальше →

Почему я больше не рекомендую Julia

Reading time7 min
Views20K

Много лет я пользовался языком программирования Julia для преобразования, очистки, анализа и визуализации данных, расчёта статистики и выполнения симуляций.

Я опубликовал несколько опенсорсных пакетов для работы с такими вещами, как поля расстояний со знаком, поиск ближайших соседей и паттерны Тьюрингатакже с другими), создавал визуальные объяснения таких концепций Julia, как broadcasting и массивы, а ещё применял Julia при создании генеративной графики для моих визиток.

Какое-то время назад я перестал пользоваться Julia, но иногда мне задают о нём вопросы. Когда люди спрашивают меня, я отвечаю, что больше не рекомендую его. Мне подумалось, что стоит написать, почему.
Читать дальше →

О конце времен. Может ли время закончиться?

Reading time3 min
Views18K

Когда мы говорим "время закончилось" или "время истекло", то имеем в виду окончание времени какого-то процесса. После этого процесса будут и другие, позже. Но может ли быть так, что "позже" не будет? Может ли закончиться само время?

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

С другой стороны, по направлению в прошлое (Большой Взрыв) время обрывается, то есть было время, когда времени не было. Есть много космологических моделей Большого Взрыва, и все они стараются избавиться от сингулярности, сделать физические величины непрерывными. Об этом в отдельной статье.

Итак, если такое возможно в прошлом, то можем ли мы соорудить элегантный конец времен в будущем?

Читать далее

Как задавать требования к качеству ПО в цифрах?

Reading time26 min
Views39K

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

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

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

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

При этом остаётся прагматический вопрос — а что именно писать в требования, чтобы они были полезными, измеримыми, реализуемыми?

С точки зрения системной инженерии, требования к качеству программной системы являются разновидностью системных ограничений (constraints) и в этом они отличаются от требований к способностям (capabilities) системы, в мире ИТ обычно называемых «функциональными».

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

Давайте попробуем сделать это хотя бы ремеслом.

Читать далее

Гравитационная постоянная и внеземной разум

Reading time4 min
Views6.8K

Внеземной разум (англ. Extraterrestrial intelligence, ETI) это один из спекулятивных вопросов науки. Но даже Стивен Хокинг считал мало вероятным, что разумная жизнь не появилась где-то в космосе, если учесть масштабы Вселенной. По программе SETI долгое время делались попытки обнаружить сигналы от внеземных цивилизаций, и даже передать сообщение внеземному разуму (программа METI). В фантастике и популярной культуре тема весьма популярна. Как-то установилось, что инопланетяне выглядят как серые или зелёные человечки, а в фантастических произведениях это самые разнообразные существа экстравагантного вида.

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

Нас интересует пока их физика. Если уж они разумны, они изучают окружающий мир и устанавливают его закономерности.

Вполне возможно, что их физики обратили внимание на движение планет, а сами они создавали какие-то средства передвижения, возможно, на реактивном принципе.

Конечно, одни из первых законов, которые они обнаружили, это законы орбитального движения и закон инерции.

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

Читать далее

OverScript — язык программирования, написанный на C#

Reading time14 min
Views19K

Привет! Меня зовут Дмитрий, я написал на C# свой интерпретируемый язык программирования, который назвал — OverScript. Это си-подобный язык со статической типизацией. Сразу скажу, что это не прототип, а готовый проект. Весь код на 100% мой. Я подробно не интересовался, как написаны другие языки, поэтому вся реализация интерпретатора это моя чистая импровизация. Мой подход неконвенциональный, поэтому к техническим аспектам стоит относиться без ассоциаций с тем, что вы могли ранее видеть в других языках, несмотря на то, что некоторые вещи могут казаться знакомыми.


image

Читать дальше →

Опыт переезда в облако VKCS (IaC, IaC и в продакшн)

Reading time23 min
Views7.2K

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

Читать далее

Баги в Hello World

Reading time3 min
Views10K

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

Конечно же эта простая программа не должна иметь баги. Верно?

Читать далее

Свободное ПО и государственное регулирование проприетарных решений как способ спасения ИТ отрасли России?

Reading time5 min
Views16K
Хабр, как центральный пишущий/читающий хаб российских ИТ специалистов лучше всего подходит для обсуждения вопросов, связанных с дальнейшим путем развития ИТ отрасли Российской Федерации. И меня, как программиста и железячника, не может не напрягать ситуация, которая продолжает складываться.

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

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

И если рассуждать здраво, то ведь действительно от западных решений придется отказываться. И такой переход будет стоить не малых денег для бизнеса (который и так в пролете), а тут еще нужно будет раскошеливаться на переделку ИТ инфраструктуры и переобучение пользователей. Особенно, если будет поддержано предложение профильных ассоциаций чуть ли о не принудительном переходе на отечественный софт. Софт, который в большинстве своем является перебрендированным клоном какого нибудь свободного проекта, но который можно продавать втридорога, ведь все равно альтернатив нет и не будет.

Или все таки можно придумать что нибудь компромиссное? Не только в интересах крупных и особо приближенных ИТ компаний, а приемлемое и для обычных разработчиков, простых и корпоративных пользователей, в том числе и с учетом интересов государства?

Читать дальше →

Программирование необычных шахмат

Reading time18 min
Views20K

Написание своего шахматного движка - обширная тема, про которую пишут целые книги.

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

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

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

Читать далее

saneex.c: try/catch/finally на базе setjmp/longjmp (C99) быстрее стандартных исключений C++¹

Reading time19 min
Views13K

Пока писал эту сугубо техническую статью, Хабр успел превратиться в местное отделение ВОЗ и теперь мне даже стыдно ее публиковать… но в душе теплится надежда, что айтишники еще не разбежались и она найдет своего читателя. Или нет?




Меня всегда восхищала стандартная библиотека Си, да и сам Си — при всей своей минималистичности от них так и веет духом тех самых первых красноглазиков хакеров. В черновике первого официального стандарта (ANSI C, он же C89, он же ANS X3.159-1989, он же, позднее, C90 и IEC 9899:1990) определяется 145 функций и макросов, из них около 25 — это вариации (ввиду отсутствия в языке перегрузок), а 26 чисто математических. K&R во второй редакции² приводят 114 функций (плюс математические), считая остальные за экзотику. В черновике³ C11 функций уже 348, но больше сотни — математика, а еще штук 90 это «перегрузки». А теперь посмотрим на Boost, где одних только библиотек — 160. Чур меня…


И среди этой сотни-полутора функций всегда были: обработка сигналов, вариативные функции (которые до интерпретируемого PHP дошли 25 лет спустя, а в Delphi, бурно развивавшемся одно время, их нет до сих пор) и порядка 50 строковых функций вроде printf() (м-м-м… JavaScript), strftime() (…) и scanf() (дешевая альтернатива регуляркам).



А еще всегда были setjmp()/longjmp(), которые позволяют реализовать привычный по другим языкам механизм исключений, не выходя за рамки переносимого Си. Вот о них и поговорим — Quake World, стеки, регистры, ассемблеры и прочая матчасть, а вишенкой будет занятная статистика (спойлер: Visual Studio непостоянна, как мартовский заяц, а throw saneex.c в два раза быстрее всех).


Текста много, не порежьтесь!

Новый язык программирования

Reading time23 min
Views21K
image
Более года назад я начал публикацию статей с описанием особенностей нового языка программирования. С тех пор утекло много воды, было протестировано множество идей, в итоге несколько раз все поменялось кардинальным образом и сейчас представляю на суд читателей описание предфинальной версии языка и его особенностей.

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

Этот проект очень долго был без собственного названия и в публикациях назывался просто и абстрактно «новый язык». Но после нескольких статей, временное название «новый язык» постепенно превратилось в имя собственное NewLang, которое я и решил в конечном итоге оставить (что еще раз подтверждает поговорку, что нет ничего более постоянного, чем что-то временное).

Читать дальше →

Что такое скликивание контекстной рекламы Яндекс Директ & Google Ads и как его можно сократить?

Reading time58 min
Views25K

В этой публикации (осторожно, около 60 страниц) вы узнаете, что именно понимается под «мошенническими кликами», как обнаружить скликивание самых распространенных типов и как определить, в каких отраслях и под-отраслях есть риск столкнуться со скликиванием. Разберем причины, по которым со скликиванием трудно бороться, и расскажем о том, как оно влияет на индустрию цифровой рекламы. Мы покажем вам, что любая компания может сделать для защиты своих рекламных кампаний от мошеннических кликов даже без использования стороннего программного решения этой проблемы.

Читать далее

Если мошенники украли деньги с банковской карты — не спешите в полицию

Reading time8 min
Views185K

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

Народ жалуется на Tinkoff, Альфа-банк и прочие банки, на операторов сотовой связи. Портал banki.ru ввёл драконовские правила, что у него решения судов без оценок в народном рейтинге, на форуме нельзя написать, что itsoft выиграл дело у ВТБ — это реклама itsoft видите ли, то есть видно надо писать одна компания, но не скажем какая выиграла суд у ВТБ.

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

К написанию данной статьи меня ещё подвиг наш конфликт с хостером Leaseweb. 7 лет мы платили одну цену в месяц за аренду серверов там. А потом она внезапно выросла в 70 раз. Leaseweb решил, что за действия злоумышленников деньги надо списать с нашей корпоративной карты.

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

Читать далее

Information

Rating
1,113-th
Location
Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer, Software Architect
Lead
C++
OOP
Linux
Programming microcontrollers
Embedded system
C
Qt
Software development