Pull to refresh
1
0
Вячеслав Кузнецов @ya_ne_znau

User

Send message

Люди не понимают ООП

Level of difficultyMedium
Reading time15 min
Views119K

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →
Total votes 126: ↑119 and ↓7+140
Comments461

Vanilla JS — очень мощный javascript-фреймворк

Reading time4 min
Views191K
Как ни странно, на Хабре упоминание этого мощнейшего фреймворка нашлось лишь в одном комментарии от апреля 2012 года.

Вступление


Для меня эта тема особенно актуальна, ведь последнее время на Хабре упоминается огромное количество js-фреймворков. Какие-то из них авторы различных проектов находят в Сети, какие-то — пишут сами, не очень понимая зачем. Кто-то просто пишет свои велосипеды.

Моё же мнение — надо стремиться к отсутствию избыточного кода, к максимальному минимализму, простите за тавтологию.
Если на весь сайт вам нужно только выбирать html-элементы по их id — глупо подключать jQuery.

Если вам на Node.js проекте надо собрать пачку js-файлов и сжать их — глупо писать или подключать тяжёлые фреймворки с кучей настроек, параметров, дополнений и методов, ведь простейший скрипт, склеивающий файлы и прогоняющий их через Кроукфордский jsmin будет намного быстрее, надёжнее и проще.

Чем больше кода — тем больше ошибок. Чем больше стороннего кода — тем сложнее поддерживать проект. Ведь когда вы берёте чужой код, вы берёте на себя и ответственность за его поддержку. Нельзя будет сказать «этот баг не мой, а вон из той библиотеки».

Vanilla JS


Итак, начнём обзор этого мощнейшего и самого популярного в мире JS-фреймворка.
Total votes 215: ↑151 and ↓64+87
Comments84

Айтишницы, айда рожать

Reading time10 min
Views76K

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

Нет, нет и ещё раз нет!

Несмотря на мнения отдельных представителей власти о том, что рождение ребёнка — это билет в бедность, общий курс заботы правительства о женской части населения уже ясен: всем срочно и много рожать!

Читать далее
Total votes 163: ↑107 and ↓56+75
Comments965

Что нам недодали в C++

Level of difficultyMedium
Reading time12 min
Views24K

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

Читать далее
Total votes 64: ↑62 and ↓2+81
Comments177

Компилятор за выходные: синтаксические деревья

Level of difficultyMedium
Reading time11 min
Views27K

Вам когда-нибудь приходилось задаваться вопросом, как работает компилятор, но так руки и не дошли разобраться? Тогда этот текст для вас. Мне тоже не доводилось заглядывать под капот, но тут так случилось, что мне нужно прочитать курс лекций о компиляторах местным третьекурсникам. Кто встречался с некомпетентными преподавателями? Здравствуйте, это я :)

Итак, чтобы самому разобраться в теме, я собираюсь написать транслятор с эзотерического языка программирования wend (сокращение от week-end), который я только что сам придумал, в обычный ассемблер. Задача уложиться в несколько сотен строк питоновского кода. Основной репозиторий живёт на гитхабе (не забудьте заглянуть в мой профиль и посмотреть другие tiny* репозитории).

Читать далее
Total votes 74: ↑74 and ↓0+74
Comments28

Сделаем для вас биометрию. Отказаться не получится

Level of difficultyEasy
Reading time4 min
Views62K

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

В октябре 2023 банк Тинькофф начал предлагать своим клиентам перевести имеющиеся у него фотографии в биометрический формат (и потом загрузить их в Единой биометрической системе — ЕБС). Причём от этого предложения было не так легко отказаться (для удобства клиентов кнопки "Не хочу" просто не было предусмотрено). Обо всём этом уже писали ранее.

Зачем это всё было надо для Тинькова? Вопрос сложный. Может быть из любви к своим клиентам, может быть чтобы заполнить пустующую ЕБС, может быть для ещё каких-то важных целей, неведомых простым смертным. Только топ-менеджмент Тинькова может дать ответ на этот вопрос, но это нам и не важно. Интереснее что из всего этого получилось.

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

Читать далее
Total votes 160: ↑159 and ↓1+196
Comments227

Поговорим об оптимизирующих компиляторах. Сказ восьмой: размотка циклов

Level of difficultyMedium
Reading time12 min
Views9.2K

Есть оптимизации, польза от которых очевидна всегда или почти всегда. Например, не делать лишнюю проверку лучше, чем делать. Не считать два раза одно и то же обычно лучше, чем считать (если только мы не упёрлись в нехватку регистров или имеем другие подобные проблемы на нижнем уровне). Вычислять выражения вне цикла выгоднее, чем в цикле. И так далее.

Но есть оптимизации, применение которых имеет как плюсы, так и минусы. Выиграв в одном месте, мы можем получить отрицательные эффекты в другом. Например, сэкономив на количестве проверок, мы можем раздуть общий объём кода и поломать микрооптимизации. Каноничным примером такой оптимизации, решение вопроса об использовании которой больше похоже на искусство, чем на науку, является размотка циклов (Loop Unrolling), о которой мы сегодня поговорим. В статье я попробую осветить как можно больше (хотя, наверное, и не все) соображения о том, почему эту оптимизацию может быть нужно или не нужно применять.

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

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

Приёмо-сдаточные на краю земли

Reading time15 min
Views5.5K

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

Ноги, крылья... главное хвост!
Total votes 35: ↑34 and ↓1+44
Comments9

Как работает протокол X11 на самом нижнем уровне

Level of difficultyMedium
Reading time13 min
Views40K

X11 это тот механизм на чем работает весь графический интерфейс Unix подобных ОС.


Но мало кто знает как он работает на самом деле. Потому что с годами он оброс слоями и слоями библиотек, которые стремятся скрыть саму сущность протокола.


А протокол в своей сути прекрасен. Он лаконичен и почти совершенен.


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


А все книги и статьи по использованию X11 описывают это через библиотеки прокладки типа XLib и XCB, и даже, что хуже, GTK или Qt.


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


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

Читать дальше →
Total votes 160: ↑158 and ↓2+197
Comments182

Современный язык международного общения

Level of difficultyEasy
Reading time6 min
Views28K

Поводом для написания этого поста стал топик на этом же подсайте.

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

Начну с цитаты из поста: >В чем сила, брат?" У иероглифического письма есть ряд преимуществ по сравнению с более известными нам алфавитными языками...

У иероглифов нет преимуществ, есть огромные огромные недостатки. У нас есть алфавит. ребенок может в день не сильно напрягаясь учить по 5 букв. На изучение алфавита английского языка в этом случае ребенок потратит 5 дней, в русском - 7. Даже без участия учителя, подрюкавшись годик-другой, ребенок научится бегло читать книги. Его грамотность будет околонулевая, без знания правил и словарных слов он будет делать множество ошибок. Но, грубо говоря, для общения с другими носителями языка он получил необходимый базовый минимум за неделю. Написать "мама и папа я вас люблю" ребенок уже сможет. Или любой величины текст, на который ему хватит терпения.

А иероглифы - это "набивка" годами тысяч очень странных знаков, причем логика их рисования очень сложная. Горы - ну ок, это можно запомнить и вспомнить. Слон? Тут уже никакой логики не хватит, чтобы понять, как из упрощенной картинки слона извлечь иероглиф. Получается, что для чтения или написания базового разговорного минимума нам, англичанам, испанцам и т.д. хватит что то в районе недели (ну ок, казахам - 9 дней), а китайцам - несколько лет. Нам не надо знать, как пишется конкретное слово. Нам достаточно уметь разговаривать на языке и знать алфавит. Ребенок после недельного обучения идет по улице и меееедленно начинает читать ЛЮБОЕ слово. А китаец, умея разговаривать на языке, через неделю обучения идет и видит вокруг себя такую же незнакомую белиберду, изредка встречая знакомые 3 десятка слов.

Читать далее
Total votes 137: ↑112 and ↓25+118
Comments560

Краткая шпаргалка по tmux (менеджеру терминалов)

Reading time1 min
Views424K
tmux — это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Как screen, только лучше (в первую очередь потому, что использует модель клиент—сервер).

image

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

Читать дальше →
Total votes 59: ↑53 and ↓6+47
Comments50

Когда закончится эра безграмотных мобильных интерфейсов? Воспоминания о курсе эргономики 1985 года

Reading time3 min
Views38K

Друзья, вы уже в курсе, что IOS достигла версии 17, а Android версии 12? Уже более 10 лет как две огромные фирмы мучают людей и совершенно не собираются умнеть.
Начнем с простого действия. Которое на компьютерах называется ESC. Отмена. Или возврат к предыдущему состоянию. Функция та же что и у BACKSPACE, но не в применению к набору текста, а к любому действию, которое захотелось отменить.
Apple упорно лишает пользователей телефонов и планшетов этой функции.

Это явное насилие, ибо понять почему на клавиатуре нет этой кнопки невозможно. Тем более, что на компьютрах Apple она имеется. Но в планшете iPad ее нет.

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

Вот я из "Почты" нырнул в какое-то приложение. И возврат обратно вот такой мизерной незаметной строчкой. < Mail. Попасть в нее пальцем ну мягко говоря не просто. Равно как и разглядеть.

Читать далее
Total votes 160: ↑133 and ↓27+131
Comments376

Продление жизни временных значений в С++: рецепты и подводные камни

Reading time19 min
Views19K

Прочитав эту статью вы узнаете:

1. Способы, которыми можно продлить время жизни временного объекта в С++.

2. Рекомендации и подводные камни этого механизма, с которыми может столкнуться С++ программист, и с которыми сталкивался на работе я.

Информация из статьи может быть полезна как новичкам, так и профессионалам.

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

Чай готов, начинаем погружение
Total votes 33: ↑31 and ↓2+37
Comments11

Почему программистам нужны кабинеты с закрывающимися дверями?

Reading time8 min
Views17K
Обычная ситуация: вы сидите за своим рабочим столом, погрузившись в размышления, и пытаетесь разрешить проблему, которая вот уже неделю не дает вам продвинуться в работе. В глубинах сознания вы выстраиваете структуру из мыслей и вероятностей, о которой ни один философ и не мечтал: выявляете концепты, прилаживаете их друг к другу, поворачиваете так и эдак, чтобы они состыковались. Что-то вроде арки, сложенной из камней: когда она будет закончена, то окажется достаточно прочной, чтобы пережить целые поколения – но пока не готова, может развалиться до основания, если слишком рано перестать удерживать части.



Триумфальная арка © Verity Cridland/flickr

Тут мимо проходит коллега и замечает, что вы просто сидите, возможно, со слегка приоткрытым ртом, не исключено, что голова у вас слегка склонена, глаз подергивается и общее выражение лица такое, будто вы проглотили муху (или это только у меня так?). В общем, очевидно, что вы ничем не заняты. Поэтому коллега трогает вас за плечо и говорит: «Эй, можно тебя на минутку? Я только хотел спросить…»

И вот, в эту самую секунду роскошная полуарка, которую вы с таким трудом удерживали, обрушивается к вашим ногам.
Читать дальше →
Total votes 28: ↑27 and ↓1+31
Comments23

Классическое программирование на грани вымирания

Level of difficultyEasy
Reading time6 min
Views96K
Все изображения в этой статье сгенерированы нейросетью DALL-E 2

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

Период моего юношества пришёлся на 80-е годы. Тогда я занимался программированием ПК вроде Commodore VIC-20 и Apple IIe дома. Во время обучения в Калифорнийском университете, где я в итоге получил свою докторскую степень, основная часть моей учебной программы была посвящена «классическим» компьютерным наукам: программирование, алгоритмы, структуры данных, системы и различные языки. В классической форме задача компьютерных наук заключается в представлении некой идеи в виде программы, написанной человеком на языке вроде Java, C++ или Python. Причём, какой бы сложной ни была эта идея — начиная от алгоритма объединения баз данных и заканчивая крайне сложным протоколом консенсуса Paxos — её можно выразить в виде понятной для человека программы.
Читать дальше →
Total votes 99: ↑56 and ↓43+30
Comments322

«Что? Где? Когда?» в названии багов

Level of difficultyEasy
Reading time3 min
Views13K

Хорошее название бага понятно любому:

- менеджеру, плохо знающему техническую часть проекта;

- джуниору, который только пришел в проект;

- разработчику (зачем мне это чинить?)

Для этого оно должно отвечать на 3 главные вопроса: Что? Где? Когда?

И в этой статье я хочу разобрать каждый из них подробнее

Читать далее
Total votes 21: ↑20 and ↓1+23
Comments14

О простом методе быстрого обновления абсолютных центральных моментов

Reading time5 min
Views2.2K

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

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

Читать далее
Total votes 12: ↑11 and ↓1+16
Comments12

Ускоряем программу для 50-летнего процессора на 180000%

Level of difficultyHard
Reading time36 min
Views46K

В прошлом году я написал программу, вычисляющую 255 цифр числа π на самом первом микропроцессоре от Intel - 4004. В той статье я упоминал рекорд ENIAC'a - 2035 цифр [^1], но побить его не смог. Настало время закрыть гештальт. В этот раз возьмём одного из преемников от Intel - 4040.

Читать далее
Total votes 225: ↑223 and ↓2+285
Comments41

Лунная Одиссея XXI века: Возвращение человечества к забытому рубежу

Reading time14 min
Views6.8K

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

Читать далее
Total votes 14: ↑11 and ↓3+11
Comments11

Ещё раз про алгоритм сжатия Хаффмана

Level of difficultyHard
Reading time21 min
Views17K

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

Читать далее
Total votes 33: ↑32 and ↓1+37
Comments13

Information

Rating
4,661-st
Location
Москва, Москва и Московская обл., Россия
Registered
Activity