Pull to refresh
0
0
Send message

Анализ сишного Hello World

Reading time7 min
Views70K
Hello World — одна из первых программ, которые мы пишем на любом языке программирования.

Для C hello world выглядит просто и коротко:

#include <stdio.h>

void main() {
  printf("Hello World!\n");
}

Поскольку программа такая короткая, должно быть элементарно объяснить, что происходит «под капотом».
Читать дальше →
Total votes 227: ↑226 and ↓1+225
Comments142

Yet another tutorial: запускаем dotnet core приложение в docker на Linux

Reading time7 min
Views19K


В один пасмурный летний день, после посещения секции от авито на РИТ2017, до меня вдруг дошло, что хайп по поводу докера не смолкает уже пару лет и пора, наконец, уже его освоить. В качестве подопытного для упаковки был выбран dotnet core+C#, т. к. давно интересно было посмотреть, каково это — разрабатывать на C# под Linux.

Предупреждение читателю: статья ориентирована на совсем новичков в docker/dotnet core и писалась большей частью, как напоминалка для себя. Вдохновлялся я первыми 3 частями Docker Get Started Guide и неким блог-постом на english. У кого хорошо с английским, можно читать сразу их и в общем-то будет сильно похоже. Если же после всего вышенаписанного вы еще не передумали продолжить чтение, то добро пожаловать под кат.
Итак, погнали!
Total votes 19: ↑18 and ↓1+17
Comments10

Лабораторная работа: введение в Docker с нуля. Ваш первый микросервис

Reading time26 min
Views343K
Привет, хабрапользователь! Сегодня я попробую представить тебе очередную статью о докере. Зачем я это делаю, если таких статей уже множество? Ответов здесь несколько. Во-первых не все они описывают то, что мне самому бы очень пригодилось в самом начале моего пути изучения докера. Во-вторых хотелось бы дать людям к теории немного практики прямо по этой теории. Одна из немаловажных причин — уложить весь накопленный за этот недолгий период изучения докера опыт (я работаю с ним чуть более полугода) в какой-то сформированный формат, до конца разложив для себя все по-полочкам. Ну и в конце-концов излить душу, описывая некоторые грабли на которые я уже наступил (дать советы о них) и вилы, решение которых в докере просто не предусмотрено из коробки и о проблемах которых стоило бы задуматься на этапе когда вас распирает от острого желания перевести весь мир вокруг себя в контейнеры до осознавания что не для всех вещей эта технология годна.

Что мы будем рассматривать в данной статье?

В Части 0 (теоретической) я расскажу вам о контейнерах, что это и с чем едят
В Частях 1-5 будет теория и практическое задание, где мы напишем микросервис на python, работающий с очередью rabbitmq.
В Части 6 — послесловие
Читать дальше →
Total votes 108: ↑107 and ↓1+106
Comments36

Танчики на Паскале: как учили детей программированию в 90-х и что с этим было не так

Reading time5 min
Views26K
Немного о том, что из себя представляла школьная «информатика» в 90-х, и почему все программисты тогда были исключительно самоучки.


Total votes 38: ↑23 and ↓15+8
Comments184

Почему вместо четырёхдневной рабочей недели лучше подумать о шестичасовом рабочем дне

Reading time8 min
Views31K
Разговор о сокращении продолжительности рабочей недели очень своевременный, но в нынешней форме — совершенно бессмысленный в силу своей хаотичности, потому что люди бросились обсуждать высочайшую инициативу Дмитрия Медведева о возможном введении четырёхдневной рабочей недели, не определившись с базовыми вещами: приоритетами и целями. Ну и разобравшись по пути с некоторыми мифами и заблуждениями.

Фактически, в России сорокачасовой рабочей недели уже давно нет — чтобы в этом убедиться, достаточно посчитать, сколько на самом деле у нас рабочих дней. В невисокосном году 52 недели + 1 день. При пятидневке это должно означать 260 или 261 рабочий день. Но из-за дополнительных праздничных выходных в 2019 году в России будет всего 247 рабочих дней. За вычетом также 28 календарных дней (то есть, четырёх недель или двадцати рабочих дней) отпуска остаётся 227 рабочих дней в течение 48 недель — то есть, средняя рабочая неделя в России уже не пятидневная, а 4,73-дневная — или 38-часовая вместо 40-часовой.

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

image
Total votes 99: ↑53 and ↓46+7
Comments235

В кабине машиниста поезда

Reading time9 min
Views51K

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

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

В общем, добро пожаловать в кабину поезда «Аэроэкспресс» и в рабочий день машиниста. Причём не обычного, а Алексея Александровича Назарова — человека, который испытывал первые швейцарские составы компании Stadler, принимал их для России и учил других машинистов обращаться с ними.
Total votes 92: ↑91 and ↓1+90
Comments131

Ездовые собаки: что нужно про них знать, и как их выводили

Reading time10 min
Views31K

У породы бывают карие глаза или синие. А у этой — оба варианта сразу.

Одна из самых крутых историй Туту Приключения — то, как полярники Дмитрий и Матвей Шпаро водят экспедиции школьников на Северный полюс. Да, прямо на самый полюс — на лыжах. В детском лагере «Большое Приключение» в Карелии, куда можно поехать просто так, а юные полярники приезжают готовиться к экспедиции, живут 60 ездовых собак. С этими собаками можно и просто пожить 14 дней, и пройти большой трекинговый маршрут.

Полтора года назад часть собак перевели в Москву. На севере парка «Сокольники» есть отгороженная площадка хаски-парка, и там можно пообниматься с сибирскими хаски и чукотскими ездовыми. Просто дойти до базы, заплатить 400 рублей за билет и оказаться среди клубка лохматых собак. Это те самые собаки, которые участвуют в приключении, просто до них может дойти каждый москвич.

А прелесть в том, что они безопасны для человека. Базовая порода, из которых их выводили, — это просто стаи собак, живших около стойбищ кочевых народов. Стояли яранги чукчей, а вокруг бегали собаки на свободном выгуле. И вот если хотя бы одна из них (любая) зарычит на ребёнка, то её тут же стреляют как опасную.

Много поколений отбраковки собак, агрессивных к людям, и отбора самых послушных (для езды в упряжках) дали собаку, начинающую ластиться к каждому человеку, которого увидит. Но в данном случае это не значит, что они не соперничают между собой.
Читать дальше →
Total votes 90: ↑77 and ↓13+64
Comments33

Инструментарий для анализа и отладки .NET приложений

Reading time6 min
Views22K

Заглянуть «под капот» кода или посмотреть на внутреннее устройство CLR можно с помощью множества инструментов. Этот пост родился из твита, и я должен поблагодарить всех, кто помог составить список подходящих инструментов. Если я пропустил какие-то из них, напишите в комментариях.


Во-первых, я должен упомянуть, что хороший отладчик уже присутствует в Visual Studio и VSCode. Также существует множество хороших (коммерческих) профилировщиков .NET и инструментов мониторинга приложений, на которые стоит взглянуть. Например, недавно я попробовал поработать с Codetrack и был впечатлён его возможностями.


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


Total votes 50: ↑50 and ↓0+50
Comments9

Disposable ref structs в C# 8.0

Reading time4 min
Views18K

Давайте посмотрим, что об этом сказано в блоге о предстоящих изменениях в С# 8.0 (версия Visual Studio 2019 Preview 2):


«stack-only структуры появились в С# 7.2. Они чрезвычайно полезны, но при этом их использование тесно связано с ограничениями, например невозможностью реализовывать интерфейсы. Теперь ссылочные структуры можно очищать с помощью метода Dispose внутри них без использования интерфейса IDisposable».


Так и есть: stack-only ref структуры не реализуют интерфейсы, иначе возникала бы вероятность их упаковки. Следовательно, они не могут реализовывать IDisposable, и мы не можем использовать эти структуры в операторе using:


class Program
{
   static void Main(string[] args)
   {
      using (var book = new Book())
      {
         Console.WriteLine("Hello World!");
      }
   }
}

ref struct Book : IDisposable
{
   public void Dispose()
   {
   }
}

Попытка запустить этот код приведёт к ошибке компиляции

Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments42

Как устроена защита детей от информации — и феерическая история про то, откуда она сначала взялась (18+)

Reading time10 min
Views85K


Всё началось с американских комиксов после Второй Мировой. Дело в том, что до войны ввели запрет на продажу порнографии, а порнографией нередко занимались бывшие бутлегеры. И вот у них встали печатные станки, и надо было что-то срочно придумывать. Придумались комиксы, поскольку с накалом обстановки из-за войны начала расти потребность в простых штуках (а комиксы тогда делали так, что читать уметь далеко не обязательно) и простых же супергероях, дарящих утешение.

Появились Супермен и его братва. Чуть позже, примерно с появлением Чудо-женщины, всё это эволюционировало обратно к мягкой порнографии (оценочное суждение). Забегая вперёд — доктор психиатрических наук обвинял эту серию в развитии множества половых извращений у малолетних американцев. Почему? Да потому что для аудитории самый естественный сюжет с дамой в трусах поверх остальной не очень богатой одежды — быть в беде. Сексуально. Ну, насколько тогда было возможно.
Читать дальше →
Total votes 177: ↑175 and ↓2+173
Comments829

C# WPF аналог Window.ShowDialog() или разбираемся с DispatcherFrame

Reading time2 min
Views7K

Постановка задачи


В рамках разработки одного приложения потребовалось реализовать такую схему:


  1. Асинхронный метод запрашивает данные
  2. Пользователь вводит данные с клавиатуры
  3. Метод получает результат ввода как результат выполнения функции и продолжает с того же места

Дополнительные требование: Не создавать дополнительных окон.


Казалось бы, просто? Как оказалось, действительно просто. Но обо всём по порядку.

Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments3

Windows service. Поиск системных ошибок и отображение их в WinForm C#

Reading time7 min
Views10K
В этой статье мы разберем как с нуля создать приложение, которое будет работать со службами windows и отображать системные ошибки в WinForm (C#).

План этой статьи:

  • Создание службы
  • Event Viewer
  • Код службы
  • Проверка работы службы(Запуск службы вручную)
  • Отображение WinForm

Создание службы


Открываем Visual Studio. Дальше File → New → Project → (Windows Desktop) → Windows Service (.Net Framework) → Ok.

Дальше нужно создать установщик. В открывшемся окне щелкаем ПКМ и выбираем «Add Installer». У вас создастся «ProjectInstaller.cs[Design]» после чего нужно будет перейти к коду «F7» или ПКМ «View Code». Нужно найти строку «InitializeComponent();», поставить на нее курсор и нажать «F12», дальше нужно добавить следующие строки:

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem; //Чтоб не запрашивало имя пользователя и пароль
this.serviceInstaller1.Description = "Show me system error."; //Описание которое будет видно в списке служб
this.serviceInstaller1.DisplayName = "GetSystemError"; //Название службы которое будет видно в списке служб

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


Читать дальше →
Total votes 24: ↑19 and ↓5+14
Comments15

Скрипт настройки Windows 10

Reading time2 min
Views171K

image
Давно хотел поделиться своим скриптом по автоматизации настройки Windows 10 (на данный момент актуальная версия 19041), да все руки не доходили. Возможно, он будет кому-то полезен целиком или только его части. Конечно, будет проблематично описать все пункты настройки, но постараюсь выделить самое важное.

Если кому-то интересно, то добро пожаловать под кат.

Читать дальше →
Total votes 88: ↑77 and ↓11+66
Comments297

Тонкости Lambda Expressions в C#

Reading time2 min
Views17K

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

Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments6

Фантазии на тему метаклассов в C#

Reading time6 min
Views7.5K
Программистам вроде меня, которые пришли в C# с большим опытом работы в Delphi, часто не хватает того, что в Delphi принято называть ссылками на класс (class reference), а в теоретических работах – метаклассами. Я несколько раз натыкался в разных форумах на обсуждение, проходящее по одной схеме. Начинается оно с вопроса кого-то из бывших дельфистов на тему того, как сделать метакласс в C#. Шарписты просто не понимают вопроса, пытаются уточнить, что это за зверь такой – метакласс, дельфисты как могут объясняют, но объяснения краткие и неполные, и в итоге шарписты остаются в полном недоумении, зачем всё это нужно. Ведь то же самое можно сделать с помощью рефлексии и фабрик класса.

В этой статье я попытаюсь всё-таки рассказать, что такое метаклассы, тем, кто с ними никогда не сталкивался. Дальше уже пусть каждый сам решает, хорошо ли было бы иметь такую вещь в языке, или рефлексии достаточно. Всё, что я тут пишу, это именно фантазии на тему того, как оно могло бы всё быть, если бы в C# действительно были метаклассы. Все примеры в статье написаны на этом гипотетическом варианте C#, ни один существующий на данный момент компилятор не сможет их откомпилировать.
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments67

Собственный сервер Commento с Docker Compose

Reading time9 min
Views6.2K

Апдейт (2023): Проект Commento заброшен и больше не развивается. Я настоятельно рекомендую переходить на Comentario — мой форк, в котором переработано почти всё.


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


TL;DR-версия: я разработал конфигурацию Commento-сервера, которая легко и просто развёртывается в полуавтоматическом режиме. Скопируйте себе этот репозиторий с GitHub и следуйте инструкциям в README.

Некоторое время назад мне неудержимо захотелось сменить Disqus — который является, пожалуй, самой распространённой системой для добавления комментариев к страницам — на свободный и открытый Commento.


Почему именно Commento?


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


Плюс к этому, бесплатная его версия показывает рекламу, от которой можно откупиться «всего лишь» за 9 долларов в месяц (план Plus). Уже только этого достаточно, чтобы захотелось найти что-нибудь получше.


В какой-то момент я наткнулся на этот пост и узнал о существовании свободного сервера комментариев под названием Commento. По счастливому совпадению, Commento как раз не так давно стал полностью открытым — раньше он выпускался в двух вариантах, бесплатном Community и коммерческом Enterprise. Спасибо его разработчику Adhityaa Chandrasekar.

Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments19

Трекинг украденного велосипеда по протоколу NB-IoT

Reading time3 min
Views20K


Интернет вещей проникает повсюду, даже в велосипеды. Вы можете своими руками смастерить маленький трекер с поддержкой протокола NB-IoT. В любой момент этот гаджет ответит на ваш запрос через интернет и сообщит GPS-координаты велосипеда. И что самое приятное, такой трекер работает целый год на одной батарейке. И это ещё не предел: другие сенсоры NB-IoT могут работать до десяти лет на одном заряде. Низкое энергопотребление — главное преимущества велосипедного трекера NB-IoT перед стандартными решениями GSM/GPS. Наш прибор большую часть времени проводит в спящем режиме и потребляет минимум энергии.
Читать дальше →
Total votes 27: ↑19 and ↓8+11
Comments88

Сколько стоят юнит тесты?

Reading time14 min
Views18K
image

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

Читать дальше →
Total votes 44: ↑28 and ↓16+12
Comments401

Крупные заговоры быстро раскрываются

Reading time3 min
Views44K
Все знают историю Эдварда Сноудена и секретного проекта PRISM по массовой слежке со стороны АНБ, о котором Сноуден рассказал миру. Если верить математику из Оксфордского университета, то это была не случайность, а закономерность. Согласно теории вероятности, чем больше людей вовлечено в заговор, тем быстрее кто-нибудь проболтается. Д-р Дэвид Роберт Граймс (David Robert Grimes) рассчитал в точности, сколько времени в среднем продержится заговор в секрете, в зависимости от количество вовлечённых людей.

Расчёты д-ра Граймса опубликованы 26 января в журнале PLOS ONE.

Ключевой параметр в формуле — вероятность того, что конкретный участник заговора станет причиной утечки информации. Для вычисления этого параметра учёный использовал известные параметры трёх уже раскрытых заговоров: упомянутого проекта PRISM (30 000 участников заговора, срок раскрытия 6 лет), исследовании сифилиса в Таскиги (6700 человек, 25 лет), а также некорректных научных методов, применявшихся в ФБР (500 человек, 6 лет).
Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments115

Self-contained дистрибуция .NET Core приложений

Reading time3 min
Views30K

Если вы вдруг пропустили, то .NET теперь open source, а .NET Core это бесплатный, open source, кроссплатформенный фреймворк, который вы можете скачать и запустить за время <10 минут. Вы можете получить его на Mac, Windows и на пол-дюжине Unix-ов с сайта dot.net Попробуйте его вместе с бесплатной, кроссплатформенной Visual Studio Code и вы будете писать на C# и F# всегда и везде.
Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments19

Information

Rating
Does not participate
Registered
Activity