Pull to refresh
-6
0
Иван @wendel

Умею делать бэкенды и фронтэнды

Send message

Дженерики могут замедлить ваш код на Go

Reading time34 min
Views17K

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

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

Читать далее
Total votes 49: ↑46 and ↓3+56
Comments13

Хочу предупредить: скорее всего, уже в этом году домены .RU можно будет продлить только через Госуслуги

Reading time4 min
Views60K
image

Нас пригласили на заседание с представителями Минцифры. Если коротко, то слухи про регистрацию национальных доменов через Госуслуги — это не слухи, и скоро будет законопроект, а затем всё идёт к тому, что будет принят и закон, который прямо устанавливает эту фичу. Сама идея использовать Госуслуги для авторизации — неплохая, если она будет опциональной, как и обсуждалось. Но похоже, что выбора не будет.

Я хочу предупредить вас как можно раньше, что, видимо, продление и регистрация доменов в зонах .RU,.РФ и .SU будет проходить только через Госуслуги.

Сейчас в зоне .RU около 5 миллионов доменов. По моей предварительной оценке, из них останется около 3 миллионов доменов в течении следующих 2 лет после принятия закона. Это скорее всего вызовет и экономические, и юридические последствия.

Приготовьтесь заранее, что вы, возможно, не сможете продлить домен автоматически.

По понятным причинам до текста законопроекта рано говорить про конкретику, техническую реализацию, особенности правоприменения и так далее, но уже можно предположить несколько сценариев развития событий. Но точно понятно, что вы как владелец домена теперь достоверно будете известны государству.
Читать дальше →
Total votes 97: ↑96 and ↓1+136
Comments289

Миллион одновременных соединений

Reading time8 min
Views63K

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

Адрес TCP/IP поддерживает только 65000 подключений, поэтому придётся назначить этому серверу примерно 30000 IP-адресов.

Существует 65535 номеров TCP-портов, значит ли это, что к TCP-серверу может подключиться не более 65535 клиентов? Можно решить, что это накладывает строгое ограничение на количество клиентов, которые может поддерживать один компьютер/приложение.

Если есть ограничение на количество портов, которые может иметь одна машина, а сокет можно привязать только к неиспользуемому номеру порта, как с этим справляются серверы, имеющие чрезвычайно большое количество запросов (больше, чем максимальное количество портов)? Эта проблема решается распределением системы, то есть кучей серверов на множестве машин?

Поэтому я написал эту статью, чтобы развеять данный миф с трёх сторон:

  1. Мессенджер WhatsApp и веб-фреймворк Phoenix, построенный на основе Elixir, уже продемонстрировали миллионы подключений, прослушивающих один порт.
  2. Теоретические возможности на основе протокола TCP/IP.
  3. Простой эксперимент с Java, который может провести на своей машине любой, если его всё ещё не убедили мои слова.

Если вы не хотите изучать подробности, то перейдите в раздел «Итоги» в конце статьи.
Читать дальше →
Total votes 82: ↑80 and ↓2+99
Comments27

Стресс на работе: та ещё пандемия XXI века

Reading time23 min
Views42K

Стресс — это аромат и вкус жизни.

Ганс Селье, основоположник учения о стрессе, 
биолог с мировым именем, эндокринолог, патофизиолог

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

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

А вообще — стоит ли стресс на работе такого внимания? Однозначно стоит.

Читать далее
Total votes 24: ↑21 and ↓3+42
Comments18

Почему мы смотрим в среднем на 15 секунд в прошлое

Reading time5 min
Views19K


Давайте поставим эксперимент. Откройте приложение камеры на смартфоне и начните записывать видео. Поместите экран прямо перед глазами и попробуйте использовать эти живые кадры для перемещения по комнате. Сложно и неприятно, правда? Даже с современной технологией всё слишком мыльное при свободном движении. Цвета сливаются, а формы искажаются.


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

Читать дальше →
Total votes 31: ↑26 and ↓5+30
Comments49

Обзор бесплатных источников котировок фондового рынка

Reading time5 min
Views61K
Здравствуйте. Я работаю программистом, и у меня есть хобби — изучение фондового рынка. Фондовый рынок с точки зрения программиста — набор данных, которые надо сперва получить, а потом проанализировать. В этой статье я расскажу о первой части квеста — как данные получить. Статья не претендует на полноту исследования, а лишь описывает мой субъективный опыт, полученный за последние пару лет.

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

Отдельно замечу, что я никаким образом не аффилирован ни с одной из организаций, упомянаемых в статье. Я просто ищу пути решения своих задач, и делюсь опытом.
Читать дальше →
Total votes 4: ↑3 and ↓1+3
Comments17

Разработка приложений на Typescript с использованием Nx

Reading time11 min
Views21K

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

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

Волновая природа гравитации (научная гипотеза)

Reading time8 min
Views5.4K

Моя мотивация создания детекторов высокочастотных гравитационных волн (ВГВ) носит гипотетический характер, но согласитесь, что регистрация гравитационных волн в недавнем времени также носила гипотетический характер. А сегодня это реальное перспективное направление в астрофизике и чуть ли не единственный путь изучения далёкого космоса.

 

Читать далее
Total votes 11: ↑1 and ↓10-8
Comments22

Поиск Google умирает

Reading time7 min
Views136K
Сегодня самый популярный поисковый движок — это Reddit. Единственные, кто этого не знает — команда Reddit, которая не может отвлечься на создание приличного интерфейса поиска. Поэтому вместо этого нам приходится прибегать к Google и добавлять в строку запроса слово «reddit».

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

reddit google graph

Пол Грэм: «Reddit — уникальная соцсеть. Спустя 15 лет после запуска она всё ещё не достигла своего пика».

Почему люди ищут именно на Reddit? Короткий ответ: очевидно, что поисковые результаты Google умирают. Длинный ответ: бОльшая часть веба стала слишком недостоверной, чтобы ей доверять.
Читать дальше →
Total votes 136: ↑119 and ↓17+136
Comments436

Криптовалютный бандвагон

Reading time9 min
Views4.8K

*Бандвагон  —  повальное бездумное увлечение чем-либо в силу моды, популярности. От амер. Bandwagon  —  фургон с оркестром, привлекающий зевак.

Распространение криптовалют способствовало разработке множества решений на основе распределенного реестра (блокчейна). Хотя области применения этих решений и разнятся, большинство из них имеет одинаковый базовый набор услуг безопасности — конфиденциальность, подлинность и целостность. Эти характеристики достигаются благодаря наличию в практических приложениях механизмов асимметричной криптографии, в частности электронной цифровой подписи (ЭЦП). Но в отличие от множества других решений на основе асимметричной криптографии, в криптовалютных сетях не используются сертификаты общедоступных ключей. Именно об этой особенности решений на основе блокчейна мы и хотели бы поговорить.

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

Что такое Web3? Децентрализованный Интернет будущего

Reading time9 min
Views92K

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

Если история нас чему-то научила, то эти изменения будут иметь большое значение в будущем.

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

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

Читать далее
Total votes 41: ↑9 and ↓32-21
Comments81

Антибиткоин: какой должна быть криптовалюта, чтобы на самом деле заменить фиат?

Reading time13 min
Views11K


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

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

Эта ситуация уже не устраивает ни государства, всё активнее пытающиеся регулировать криптовалюты, ни самих криптоэнтузиастов, которые хотели с помощью блокчейна изменить мир к лучшему, а не наблюдать, как старый мир кооптирует криптовалюты, обращая их на пользу существующему статусу-кво: делая уже богатых ещё богаче, а банки и другие финансовые институты — ещё влиятельнее.
Читать дальше →
Total votes 26: ↑23 and ↓3+28
Comments94

В поисках gRPC-шлюза

Reading time8 min
Views8.3K

Дано:

несколько gRPC-сервисов, каждый слушает свой порт.

сервисы могут доверенно подключаться друг к другу, для аутентификации используется Mutual TLS.

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

Найти:

единую точку входа для API (API Gateway) для gRPC, HTTP/2.

Дисклеймер: решение так и не найдено, зато проведено исследование gRPC-отражения (reflection). Много ссылок.

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

Ускоряем hugo на 20% простым изменением в пакете reflect

Reading time5 min
Views5.5K

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


Я был удивлён, когда в top10 списке CPU-профиля hugo при сборке digitalgov.gov на первой позиции находился метод reflect.Type.MethodByName().


      flat  flat%   sum%        cum   cum%
     8.84s  6.28%  6.28%     57.85s 41.10%  reflect.(*rtype).MethodByName
     7.93s  5.63% 11.92%      8.50s  6.04%  reflect.name.readVarint
     7.56s  5.37% 17.29%    111.79s 79.43%  reflect.Value.call
     7.53s  5.35% 22.64%     23.33s 16.58%  runtime.mallocgc
     7.29s  5.18% 27.82%     16.10s 11.44%  reflect.name.name

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

Читать дальше →
Total votes 21: ↑20 and ↓1+26
Comments11

Взлом мозгов. Сбор данных из социальных сетей

Reading time7 min
Views21K

Взлом компьютера, телефона, электроподстанции, беспилотника или даже целого города – кого этим удивишь?

Взлом мозгов сотен миллионов людей – вот это впечатляет! США, Великобритания и граждане стран третьего мира попали под влияние компании SCL Group и ее дочерних организаций, особенно на слуху была и останется теперь навечно Кембридж Аналитика.

Этот цикл рассказывает историю SCL и ее дочерних компаний глазами бывшего директора по исследованиям – Кристофера Уайли. Перед вами третья часть, и посвящена она различным методикам сбора приватных данных и тому, как команда психологов и аналитиков построила невероятно точную модель американского общества. Удивительно, порой, как плотно гуманитарные науки могут смыкаться с сугубо техническими.

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

Читать далее
Total votes 38: ↑32 and ↓6+30
Comments2

Английский. Скрытый драйвер языка

Reading time7 min
Views28K

На какие вопросы отвечает эта статья

1. Каков механизм восприятия языка “напрямую”.

2. Как тренировать этот механизм.

3. Как воспринимать английские слова как русские.

3. Почему аудирование бесполезно.

На какие вопросы не отвечает эта статья

1. Как осваивать словарный запаса.

2. Как учить грамматику.

3. Как интегрировать связь смысл-слово в дальнейшую практику.

Поэтапно буду выкладывать статьи с подробным описанием упражнений. Ответы на все неотвеченные вопросы будут в последующих статьях. 

Читать
Total votes 34: ↑23 and ↓11+13
Comments40

Golang-дайджест № 12 (1 – 31 декабря  2021)

Reading time4 min
Views5.1K

Свежая подборка новостей и материалов

Интересное в этом выпуске

Выпущены Go 1.17.5 и Go 1.16.12, GoLand 2021.3, доступна первая бета-версия Go 1.18 (с дженериками), monovania 2D платформер-головоломка, созданный с помощью Ebiten, zinc альтернатива Elasticsearch, Map-Reduce в Go

Приятного чтения!

Читать далее
Total votes 10: ↑9 and ↓1+9
Comments4

Секрет удержания сотрудников, который не стоит компаниям ничего

Reading time5 min
Views46K

Парадоксально, но без этого сотрудники уходят в два раза чаще.

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


Сейчас это огромная глобальная проблема, даже у Google и Microsoft attrition rate удвоился в течение последних двух лет. Но есть ли вакцина от такого поведения сотрудников? Оказывается, есть, и бесплатная.

Читать дальше →
Total votes 40: ↑27 and ↓13+25
Comments139

Как научиться чему угодно с помощью техники Фейнмана

Reading time9 min
Views209K


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

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

Нет никаких чудо-людей. Просто случилось так, что они заинтересовались чем-то и выучили все про это. Ричард Фейнман

Ричарда Фейнмана Ричардом Фейнманом (по крайней мере, по мнению Ричарда Фейнмана) сделал не врождённый интеллект, а систематический способ, с помощью которого он выявлял то, чего не знал, а затем бросался постигать это.

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

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

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

В этой статье будет представлен обзор техники Фейнмана и того, как вы можете применять её для постоянного расширения своих знаний и навыков. Короче говоря, Фейнман научит вас не только тому, как учиться, но и тому, как по-настоящему понимать.
Приятного чтения!
Total votes 64: ↑53 and ↓11+63
Comments106

“Yield” и деликатная работа с памятью в PHP

Reading time3 min
Views24K

Вы когда-нибудь задавались вопросом: “Какая польза от yield в PHP?”. Позвольте мне избавить вас от поиска в Google; Я с удовольствием раскрою вам пару ключевых моментов о yield:

Читать далее
Total votes 29: ↑17 and ↓12+10
Comments10

Information

Rating
Does not participate
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
Senior
PHP
Docker
Linux
Git
OOP
Symfony
Doctrine
Golang
Node.js
TypeScript