Как стать автором
Обновить
5
0
Алексей Соснин @Ne4to

Пользователь

Отправить сообщение

Что такое формальная верификация

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5.4K

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

Формальная верификация — это доказательство с использованием математических методов корректности программного обеспечения.

Формальная верификация молода. На сегодняшний день, на сайте хабр, например, нет (пока) специализации «Формальная верификация», нет специальности «Proof инженер» или «Специалист по формальной верификации». А люди, работающие по этой специальности — есть.

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

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

Инструменты для верификации — это программные средства для доказательства теорем (Coq, Isabelle ...), а также SAT-solvers.

В 70х годах предки формальной верификации — это доказательства простых утверждений о программе (конкретной функции) с помощью ручки и листка бумаги. Сегодня — это (иногда многолетние) исследовательские проекты для конкретного программного обеспечения, вот некоторые из них:

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии27

Рецепт карьерного роста

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров8.8K

Эта публикация предназначена для прочтения в выходные или предвыходые дня для поднятия или поддержания хорошего настроения.

Всё изложенное в ней абсолютная правда. Или почти.

Сразу после окончания Новосибирского Университета, в первый же день моей трудовой деятельности на ВЦ СОАН СССР я возглавил коллектив из более чем тридцати учёных, включая двух докторов наук. Руководящий пост я не покупал, как возможно предположили некоторые, никаких необходимых для занятия этого поста связей и знакомств у меня не было.

Я не уверен, что могу посоветовать мой рецепт карьерного роста другим. Но узнать о нём вам будет, я надеюсь, небезинтересно.

Читать далее
Всего голосов 38: ↑29 и ↓9+20
Комментарии11

Мой опыт переезда в Лондон. Часть 2. Собеседования в FAANG

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров14K

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

Читать далее
Всего голосов 26: ↑24 и ↓2+22
Комментарии5

Налоговый и валютный резидент РФ —последствия приобретения и утраты статусов — полный FAQ с примерами

Время на прочтение27 мин
Количество просмотров28K

Друзья, всех приветствую и предлагаю ознакомиться, как мне кажется с довольно полным FAQ по теме налогового и валютного резиденства РФ. По ходу материала есть некоторые примеры, а внизу вопросы & ответы.

Читать далее
Всего голосов 51: ↑46 и ↓5+41
Комментарии47

Как открыть ИП в Грузии гражданину России? FAQ 2023 / 2024

Время на прочтение15 мин
Количество просмотров77K

В этом материале, я собрал основную информацию про открытие ИП в Грузии и переходе на статус малый бизнес 1%. Отдельно, хочу отметить что Грузия не всегда подходит для приема платежей от иностранных компаний, если фрилансер проживает в РФ более чем 183 дня в календарном году, то есть является валютным резидентом РФ, так как Грузия не входит в ЕАЭС и не обменивается с РФ финансовой информацией в автоматическом режиме, соответственно валютные правила РФ накладывают определенные ограничения на граждан РФ по приему платежей на свои иностранные счета в Грузии, связанные с предпринимательской деятельностью.

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

Читать далее
Всего голосов 30: ↑24 и ↓6+18
Комментарии43

Как можно установить «опасный» российский сертификат в Windows

Время на прочтение3 мин
Количество просмотров41K

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

Читать далее
Всего голосов 57: ↑51 и ↓6+45
Комментарии75

Мечтают ли разработчики о декларативных тестах — 2. Особое мнение

Время на прочтение15 мин
Количество просмотров1.4K

По непроверенным данным, половина несчастных случаев происходит после слов "смотри, как я умею", другая же половина — после "ерунда, смотри, как надо".

Тут один приятель, увидев фокус с тестами без тестов с использованием обобщенных аттрибутов из preview версии C# и особенностей экосистемы NUnit, отметил, что все сделано транс-ректально, а сам бы он применил Fody, и вышло бы гораздо лучше. Демонстрировать, к сожалению, ничего не стал. А мне вспомнился комментарий к описанию другого преодоления концептуального ограничения языка. Тогда руки не дошли попробовать, а сейчас вот решил глянуть, что это за птица, и проверить, поможет ли она написать более элегантное решение.

Читать далее
Всего голосов 2: ↑0 и ↓2-2
Комментарии3

Как получил оффер от Microsoft

Время на прочтение6 мин
Количество просмотров53K

О чем эта статья

Это продолжение моих похождений по ФААНГ. Предыдущая статья была о моем опыте собеседования в Амазоне.

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

К слову, все собеседования тоже сейчас проходят онлайн, и никаких онсайт интервью нет.

Читать далее
Всего голосов 88: ↑80 и ↓8+72
Комментарии139

Самые интересные блоги и сайты по C# / .NET

Время на прочтение3 мин
Количество просмотров14K

0907_cs_sites_ru/image1.png


В этой небольшой подборке собраны разные источники информации, которые могут быть полезны C# / .NET разработчикам: блоги, репозитории с исходным кодом, стандарты и аккаунты разработчиков, рассказывающих о тонкостях как языка, так и платформы в целом.

Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии14

Повесть о том как потерять 3тыс. долларов и не уехать в США

Время на прочтение16 мин
Количество просмотров112K

Добрый день Всем читателям,

сегодня будет увлекательная история, как я обосрался и это стоило мне 3000$.

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

Читать далее
Всего голосов 221: ↑198 и ↓23+175
Комментарии597

Как я научился проходить архитектурные секции

Время на прочтение4 мин
Количество просмотров31K
Архитектурные секции у многих вызывают чувство неопределенности и тревоги: формулировки не изобилуют деталями, как проверить ответ — непонятно. При этом способность пройти архитектурную секцию отличает вчерашнего выпускника от человека, которому можно доверить строить нечто большее, чем обход бинарных деревьев. В определенный момент я решил как следует подготовиться секции по дизайну, потратил на это около пары недель и выработал системный подход, которым хочу с вами поделиться.
Читать дальше →
Всего голосов 45: ↑43 и ↓2+41
Комментарии18

Основы компьютерных сетей. Тема №9. Маршрутизация: статическая и динамическая на примере RIP, OSPF и EIGRP

Время на прочтение51 мин
Количество просмотров236K


Всем привет! Спустя продолжительное время возвращаемся к циклу статей. Долгое время мы разбирали мир коммутации и узнали о нем много интересного. Теперь пришло время подняться чуть повыше и взглянуть на сторону маршрутизации. В данной статье поговорим о том, зачем нужна маршрутизация, разберем отличие статической от динамической маршрутизации, виды протоколов и их отличие. Тема очень интересная, поэтому приглашаю всех-всех к прочтению.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии1

Файл дескриптор в Linux с примерами

Время на прочтение14 мин
Количество просмотров100K
Однажды, на одном интервью меня спросили, что ты будешь делать, если обнаружишь неработающий сервис из-за того, что на диске закончилось место?

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

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

Интервьюер прервал меня на последнем слове, дополнив свой вопрос: «Предположим, что данные нам не нужны, это просто дебаг лог, но приложение не работает из-за того, что не может записать дебаг»?

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

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

Интервьюер остался доволен, а я нет.

Тогда я подумал, почему человек, проверяющий мои знания, не копает глубже? А что, если данные все-таки важны? Что если мы не можем перезапускать процесс, и при этом этот процесс пишет на файловую систему в раздел, на котором нет свободного места? Что если мы не можем потерять не только уже записанные данные, но и те данные, что этот процесс пишет или пытается записать?
Читать дальше →
Всего голосов 136: ↑136 и ↓0+136
Комментарии20

ООП, «святая троица» и SOLID: некоторый минимум знаний о них

Время на прочтение43 мин
Количество просмотров114K

Необходимое вступление


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


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


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


Тут мне могут возразить, что учить эти вещи в школе рановато, и вообще на ООП свет клином не сошёлся. Во-первых, это смотря как учить. Во-вторых, 70% материала этой статьи применимо не только к ООП. Что я буду отмечать отдельно.



Читать дальше →
Всего голосов 88: ↑82 и ↓6+76
Комментарии79

Kafka и микросервисы: обзор

Время на прочтение9 мин
Количество просмотров117K


Всем привет. В этой статье я расскажу, почему мы в Авито девять месяцев назад выбрали Kafka, и что она из себя представляет. Поделюсь одним из кейсов использования — брокер сообщений. И напоследок поговорим о том, какие плюсы мы получили от применения подхода Kafka as a Service.

Читать дальше →
Всего голосов 53: ↑53 и ↓0+53
Комментарии109

Очень много YouTube-каналов для прокачки английского языка для программистов

Время на прочтение4 мин
Количество просмотров60K
Привет, Хабр!

С помощью YouTube можно ощутимо и сравнительно быстро улучшить английский.
Понимание на слух как минимум. Истина не нова, но мало кто смотрит английский YouTube, потому что легко потеряться в бесконечности каналов. Но для вас я собрал самые стоящие каналы!

Добавляйте в закладки и подписывайтесь на меня!
Дальше вас ждет много крутых статей.

Поучить английский


AJ Hoge. На его канале есть всё: от базовых слов до размышлений о важности языка тела в общении. Чувак пилит видосы уже много лет, материальчик накопился.

EngVid. Если бы можно было выбрать что-то одно для улучшения английского, то это оно. Разные преподы и тематики, постоянное обновление, бездонный ресурс. Ещё сайт одноимённый крутой, с удобной навигацией — можно найти очень узкую тему по интересам.
Читать дальше →
Всего голосов 59: ↑52 и ↓7+45
Комментарии19

Roslyn Analyzers. Как писать код быстро и безошибочно

Время на прочтение3 мин
Количество просмотров9.8K
Roslyn, платформа компилятора .NET, помогает обнаруживать ошибки еще до запуска кода. Одним из примеров является анализатор проверки орфографии Roslyn, который встроен в Visual Studio. Скажем, вы создаете статический метод и случайно написали слово static как statc. Вы сможете увидеть эту орфографическую ошибку еще до запуска своего кода, потому что Roslyn выдаст предупреждение в вашем коде при вводе текста еще до завершения набора строки. Другими словами, вам не нужно производить сборку кода, чтобы узнать, что вы допустили ошибку.

image

Анализаторы Roslyn также могут отображать автоматическое исправление кода с помощью иконки лампочки Visual Studio, которая позволяет немедленно исправить код.

image
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии6

«Проще ответить, чем продолжать молчать» — большое интервью с отцом транзакционной памяти, Морисом Херлихи

Время на прочтение33 мин
Количество просмотров15K


Морис Херлихи — обладатель целых двух премий Дейкстры. Первая — за работу по «Wait-Free Synchronization» (Brown University) и вторая, более свежая, — «Transactional Memory: Architectural Support for Lock-Free Data Structures» (Virginia Tech University). Премию Дейкстры дают за работы, значимость и влияние которых были заметны на протяжении не менее десяти лет и, очевидно, Морис — один из самых известных специалистов в области. На данный момент он работает профессором в Брауновском университете и имеет множество достижений на целый абзац длиной. Сейчас он занимается исследованиями блокчейна в контексте классических распределенных вычислений.


Ранее Морис уже приезжал в Россию на SPTCC (видеозапись) и cделал отличную встречу сообщества Java-разработчиков JUG.ru в Питере (видеозапись).


Этот хабрапост  — большое интервью с Морисом Херлихи. В нем обсуждаются следующие темы:


  • Взаимодействие академической сферы и индустрии;
  • Фундамент для исследований блокчейна;
  • Откуда берутся прорывные идеи. Влияние популярности;
  • PhD под руководством Барбары Лисков;
  • Мир в ожидании многоядерности;
  • Новому миру – новые проблемы. NVM, NUMA и взлом архитектуры;
  • Компиляторы против процессоров, RISC vs CISC, shared memory vs message passing;
  • Искусство написания хрупкого многопоточного кода;
  • Как обучить студентов написанию сложного многопоточного кода;
  • Новое издание книги «The Art of Multiprocessor Programming»;
  • Как изобреталась транзакционная память;   
  • Почему стоит проводить исследования в области распределенных вычислений;
  • Остановилось ли развитие алгоритмов, и как жить дальше;
  • Работа в Брауновском Университете;
  • Разница между исследованиями в университете и внутри корпорации;
  • Hydra и SPTDC.
Читать дальше →
Всего голосов 68: ↑68 и ↓0+68
Комментарии8

Трассировка сервисов, OpenTracing и Jaeger

Время на прочтение7 мин
Количество просмотров117K
image

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

Для минимизации ручного труда мы решили воспользоваться одним из инструментов трассировки. О том, как и для чего можно использовать трассировку и как это делали мы, и пойдет речь в этой статье.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии7

Выбираем систему хранения файлов для командной работы

Время на прочтение5 мин
Количество просмотров48K


Мы работаем с большими объемами медиа данных: видео, рендеры, фото, иллюстрации. Чтобы обеспечивать коллективную работу, нам нужен постоянный общий доступ ко всем этим файлам.

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

Мы сравним популярные облачные хранилища для бизнеса: Google Drive, DropBox, Citrix ShareFile и Microsoft OneDrive.

Наши требования к облачному хранилищу:

  • Безлимитный объем данных — у нас много данных, в среднем около 10ТБ. Не хочется постоянно думать сколько нужно докупить места в этом месяце и почему вдруг кончилась квота.
  • Версионность файлов и логирование — git приучил нас, что все изменения можно видеть и откатить. Поэтому и с файлами должны быть точно так же: любое изменение, удаление должно быть обратимо и легко контролироваться.
  • Права доступа — никаких больше общих папок доступных всем. Каждый сотрудник должен иметь свою область видимости.
  • Upload без регистрации — клиенты не должны больше искать файлообменники, чтобы прислать нам тяжелый файл. Файлы должны сразу загружаться в наше хранилище без промежуточных сервисов.
Читать дальше →
Всего голосов 35: ↑33 и ↓2+31
Комментарии30
1

Информация

В рейтинге
Не участвует
Откуда
Красноярск, Красноярский край, Россия
Дата рождения
Зарегистрирован
Активность