Pull to refresh
64
0
Павел Тупицын @kefirr

Ignite.NET maintainer

Send message

GOTO в прикладном программировании

Reading time6 min
Views18K

Картинка из книги Thinking Forth

По мотивам «обобщенной» статьи про GOTO и статьи про GOTO в системном программировании:

Мотивы для использования GOTO и альтернативы ему принципиально отличаются для системного и прикладного программирования — это является и важной причиной холиваров. Для прояснения ситуации рассмотрим GOTO только в разрезе прикладного программирования.

Основной тезис: в прикладном программировании GOTO однозначно лучше обходить.

Как докажем:
  1. В прикладном программировании критически важен один параметр кода — сопровождаемость.
  2. Goto не ухудшает однозначно сопровождаемость только в небольшом проценте случаев, и даже в этих случаях принципиально от альтернатив не отличается
  3. Ради небольшого процента случаев его использовать вредно:
    1) очень низкоуровневое, поэтому сильно развращает программиста (возникает соблазн использовать и в других местах) — большой вред из-за небольшого процента случаев, когда GOTO можно применить;
    2) даже в таких случаях есть более красивые альтернативы.

Читать дальше →
Total votes 52: ↑36 and ↓16+20
Comments46

Первые шаги для пауэршельшиков

Level of difficultyEasy
Reading time12 min
Views448K
Привет всем из 2023 года!
Я написал эту статью 12 лет назад. И внезапно — это — моя самая популярная статья. Я так же удивился что люди до сих пор заходят сюда и читают эту статью. Поэтому я решил её обновить. И после прочтения понял, что обновлять ничего не буду.

Да, powershell обновился за последние годы. Теперь он стал Powershell Core, и его можно запускать как на Windows, так и на Linux и MacOS. В скриптах появилось много плюшек, но основная идея осталась той же.

Если вы только начинаете писать на Powershell эта статья для вас. Вам будут даны основные понятия, которые относятся к Powershell в 2023 году, и которые позволят вам погрузиться в эту оболочку с головой.


Приди ко мне брате в Консоль!
— Админ Долгорукий.

Много ярлыков улетело в корзину со времён выхода в свет 2008 Windows. Люди попроще дивились новому синему окошку, которое ребята из Майкрософт зачем-то вставили в свои новые продукты. Люди, которые сидят на блогах и знают программирование начали изучать это окошко.



В итоге к народу начало приходить осознание того, что Майкрософт действительно разработали что-то новое и интересное.
И так, зачем вам это нужно? В основном, программа под названием PowerShell (в дальнейшем PS) предназначена для администраторов и программистов. Она позволяет автоматизировать примерно 99% всех действий в системе. С помощью неё вы можете настраивать удалённые компьютеры, запускать и перезапускать сервисы и производить обслуживание большиства серверных приложений. Как выяснилось, возможности у программы потрясающие.

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

Задача этой статьи проста — показать вам малую долю возможностей PS и дать вам концептуальное понимание предмета. В действительности документации по предмету написано несметное количество, так что я не стремлюсь охватить всё. Я так же ознакомлю вас с набором утилит, которые позволят не вылезать из PS в принципе.

Читать дальше →
Total votes 257: ↑220 and ↓37+183
Comments171

Fullmetal NAS

Reading time5 min
Views12K


Предыстория

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

Ну на atom’e я ничего не собирался собирать, так как у меня его банально нет. Я предпочёл второй вариант, он подходил мне больше, но у меня нет такого туалета, куда бы все это поместить и был придуман вариант немного другой.

Читать дальше →
Total votes 215: ↑207 and ↓8+199
Comments123

Двадцать вопросов, которые помогают разработать алгоритм

Reading time5 min
Views8.2K
Как разработать алгоритм, решающий сложную задачу? Многие считают, что для этого нужно «испытать озарение», что процесс этот не вполне рационален и зависит от творческой силы или таланта.

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

Если вы хотите решить сложную задачу, собирайте информацию в самых разных направлениях. Ответив на следующие 20 вопросов, вы легко выстроите план работы над задачей.
Читать дальше →
Total votes 95: ↑81 and ↓14+67
Comments28

Тонкие моменты C#

Reading time6 min
Views109K
C SharpНе секрет, что C# сегодня популярный и динамично развывающийся язык, в отличие от своего прямого конкурента — языка Java, который в плане функциональности переживает период застоя. Основное неоспоримое преимущество Java — настоящая кросплатформенность, а не унылая и ограниченная, как у C#.

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

Как и любой язык, шарп имеет свои тонкости, особенности, «подводные камни» и малоизвестные возможности. Что я имею ввиду? Читайте под катом…
Читать дальше →
Total votes 86: ↑68 and ↓18+50
Comments32

Консервативная логика

Reading time14 min
Views20K
Вооруженные жидким азотом оверклокеры неоднократно показывали, что современные чипы могут стабильно работать на частотах в разы выше номинальных, обеспечивая соответствующий рост производительности. Тем не менее, прогресс в области «гонки гигагерц» остановился давно и надежно. Первый «Pentium 4» с частотой больше 3 ГГц появился в далеком 2002 году, почти 10 лет назад. За прошедшие годы нормы техпроцессов уменьшились со 180 до 32 нм, но даже это не позволило существенно поднять штатные рабочие частоты. Все упирается в огромное тепловыделение элементов цифровой логики.

В основе «проблемы тепловыделения» лежит глубокая связь между информационной и термодинамической энтропией, а также второе начало термодинамики, запрещающее уменьшение общей энтропии замкнутой системы. Любое вычисление, уменьшающее энтропию информационную, обязано приводить к увеличению энтропии термодинамической, то есть к выделению тепла. Рольф Ландауэр в 1961 году показал [pdf], что уничтожение одного бита информации должно приводить к выделению не менее k∙T∙ln 2 джоулей энергии, где k – постоянная Больцмана и T – температура системы. Само по себе эта энергия невелика: для T=300K она составляет всего 0.017 эВ на бит, но в пересчете на процессор в целом суммарная энергия вырастает уже до величин порядка одного Джоуля за каждую секунду работы, то есть порядка одного Ватта [Компьютерра №538]. На практике этот теоретический минимум умножается на ненулевое сопротивление и прочие неидеальности реальных полупроводников. В результате мы получаем процессоры, которые по тепловыделению обгоняют утюги.
Читать дальше →
Total votes 116: ↑112 and ↓4+108
Comments40

Задачка по C#

Reading time1 min
Views2.6K
При каких условиях пройдет данный тест?

    [Fact]
    public void NewTest()
    {
      var a = new A();

      a.GetType().GetField("b").SetValue(a, 83);
      a.GetType().GetField("c").SetValue(a, 42);

      Assert.Equal(a.b, a.c);
    }

upd: В комментариях написали уже 5 верных решений, если интересно оценить свои знания и фантазию — не заглядывайте туда преждевременно.
Total votes 54: ↑40 and ↓14+26
Comments44

Забавляемся с хешами

Reading time5 min
Views89K
Привет. Я хочу показать вам небольшой фокус. Для начала вам потребуется скачать архив с двумя файлами. Оба имеют одинаковый размер и одну и ту же md5 сумму. Проверьте никакого обмана нет. Md5 хеш обоих равен ecea96a6fea9a1744adcc9802ab7590d. Теперь запустите программу good.exe и вы увидите на экране следующее.
Попробуйте запустить программу evil.exe.
Что-то пошло не так? Хотите попробовать сами?
Тогда добро пожаловать под кат.
Total votes 264: ↑254 and ↓10+244
Comments123

Обзор C# библиотек для работы с PDF

Reading time5 min
Views170K
topic image
На написание данной статьи меня подтолкнул топик HTML в PDF, правда по причине того, что он посвящен языку php, лично мне он был мало полезен, т.к. весь опыт работы с php у меня сводился в переводе нескольких скриптов на C#, поэтому я решил сделать небольшой обзор того, что доступно для работы с pdf по средствам языка C#.

Ко мне в список попало 7 библиотек, о которых я скажу несколько слов, а для самой популярной (судя по ответам на stackoverflow), я напишу, как с помощью неё сделать простейший документ. Сразу скажу, что это iTextSharp и работа с ней будет описана в конце статьи.
Читать дальше →
Total votes 87: ↑77 and ↓10+67
Comments24

«Тросик» с таймером для цифровых камер Canon

Reading time4 min
Views18K
Не секрет, что при съемке на длинных выдержках фотографа спасают штатив и пульт управления («тросик»). Если штатив можно приобрести практически везде, и встречаются неплохие модели стоимостью даже в 600-700 рублей, то с пультом дела обстоят не так радужно. Ценник на фирменные пульты Canon начинается от $30, а между тем внутри этого пульта содержится всего лишь простейшая схема коммутации. Для съемки time-lapse видео придется приобрести пульт с таймером (фирменный Canon — $210, китайские братья по разуму подешевле). Я же хочу показать, как без применения сложной электроники и контроллеров самостоятельно собрать функциональный «тросик» с таймером, который подойдет к камерам Canon серий EOS-300D/350D/400D/450D и возможно каким-то другим.

Читать дальше →
Total votes 62: ↑59 and ↓3+56
Comments47
12 ...
9

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Registered
Activity