Pull to refresh
-8
0.5

Разработчик ПО, Администратор

Send message

F и Z паттерны в дизайне. Куда смотрит зритель?

Level of difficultyMedium
Reading time5 min
Views7.8K

Куда мы смотрим в первую очередь?

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

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

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

OpenConnect: недетектируемый VPN, который вам понравится

Level of difficultyMedium
Reading time15 min
Views298K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Total votes 273: ↑272 and ↓1+323
Comments353

Не нужно блокировать кнопки

Reading time2 min
Views5.5K
Одна из наиболее распространенных проблем доступности, которую я нахожу (и исправляю) в проектах своих клиентов – это динамическое блокирование кнопок в формах после отправки последних. Сегодня я хотел бы рассказать, почему разработчики так делают, почему это не работает и что нужно делать вместо этого. Давайте разбираться!
Читать дальше →
Total votes 17: ↑14 and ↓3+16
Comments9

Пакуем весь трафик в Ping message, чтобы не платить за интернет | ICMP NAT traversal

Level of difficultyHard
Reading time29 min
Views95K

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

Так вот, переходя ближе к теме. Вы можете воспроизвести подобное поведение очень просто прямо сейчас при помощи вашего мобильного телефона и ноутбука. Я в своём конкретном кейсе буду пользоваться услугами оператора красного цвета, однако проблема актуальна для всех текущих 4 монополистов рынка сотовой связи. Как вам, скорее всего, уже известно, они около года меняют свою политику, внедряя одно интересное нововведение — с вас требуют дополнительной платы за раздачу интернета поверх основного пакета. То есть вы не можете взять и использовать свои 7 гигов на месяц как ресурс для раздачи при помощи точки доступа. Для точки доступа вам предлагают отдельный, зачастую совсем невыгодный тариф. Конечно, можно сменить основной тариф на специальный «тариф для раздачи» и платить втридорога, но, как вы понимаете, сегодня мы в потребителя будем играть совсем недолго. Сейчас по пунктам нужно доказать нечестность подобной политики и с чувством завершённого введения перейдём к непосредственно технотексту.

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

За интернет они платят? — Да.

Раздача как-либо использует ресурсы провайдера сверх нормы? — Нет.
Читать дальше →
Total votes 233: ↑231 and ↓2+294
Comments91

Квантовое программирование для диспетчеризации производства

Level of difficultyMedium
Reading time6 min
Views6.2K

Лучший способ изучить новую технологию это применить ее на практике. Но как быть, если у вас нет квантового компьютера, а на изучение физики нет времени/желания? Это не проблема, потому что сегодня мы разберем наиболее доступный и безболезненный способ погружения в квантовые алгоритмы на примере комбинаторной оптимизации. И начнем с распространенной задачи, которая возникает на производстве - диспетчеризация технологических операций. Устраивайтесь поудобнее, приготовьте чашку любимого напитка и поехали!

Читать далее
Total votes 6: ↑5 and ↓1+7
Comments1

Сегодня ночью мы успешно выполнили обновление вашего организма

Reading time4 min
Views58K

Добрый день!

Мы рады представить вам новую версию, в которой много замечательных изменений! Вот только некоторые из них:

  • Убраны пальцы ног. Отдельные пальцы только тратили излишние ресурсы, теперь ступня просто заканчивается второй пяткой меньшего размера. Форма второй пятки примерно совпадает с формой пальцев прошлой версии для совместимости с обувью. В некоторых азиатских и греческих локалях, увы, ряд сандалий будет несовместим с новой версией. Пользователи этих локалей могли прочесть уведомления о необходимости обновить обувь за 2 недели до релиза в подразделе 14.22 оферты на нашем официальном сайте.
  • Исправлена ошибка в 6-й жаберной дуге, возвратный гортанный нерв больше не возвратный. В новой стабильной версии это прямой гортанный нерв.
  • RBP v1.0: добавлена возможность для разработчиков обращаться к нервной системе по API.

Также исправлено более сотни мелких ошибок, внесено несколько изменений в архитектуру для большего удобства пользователя, поддержки экологичности, стабильности развития, снижения углеродного следа и экономии невозобновляемых энергоресурсов. Часть обновлений связана с безопасностью, но мы не раскрываем эти данные на текущий момент.
Читать дальше →
Total votes 228: ↑214 and ↓14+253
Comments198

Когнитивные искажения — бесполезны?

Reading time9 min
Views6.5K

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

Проявить любопытство
Total votes 15: ↑12 and ↓3+13
Comments7

Как написать идеальный запрос для ChatGPT

Level of difficultyEasy
Reading time4 min
Views69K

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

Я потратил много часов на различные курсы по промт-инжинирингу и постоянно тестировал различные структуры запросов, чтобы построить формулу, которая могла бы приблизить меня к качественным ответам.

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

ChatGPT я пользовался через русифицированный сервис MashaGPT, который работает без VPN и виртуальных сим-карт. Все примеры взяты из него.

Читать далее
Total votes 16: ↑11 and ↓5+7
Comments8

Множественные личности ChatGPT

Level of difficultyEasy
Reading time27 min
Views13K

Началась эта статья с отправки письма коллегам о моих экспериментах с ChatGPT. Но в какой‑то момент я понял, что размер письма получается слишком объемным и что у меня на руках уже практически готовая статья для размещения на Хабре. В ней я поделюсь некоторыми хинтами и триками по работе с ChatGPT, о которой так много шума и продемонстрировать создание «субличностей» в ChatGPT, которые, возможно, будут вам полезны.

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

Читать далее
Total votes 35: ↑33 and ↓2+34
Comments16

Как выработать интуитивное понимание логарифмов

Level of difficultyHard
Reading time14 min
Views35K

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

Зачем этому учиться?


Для меня способность вычисления логарифмов от руки — крайне нужный навык. Количество концепций, которые мы храним в рабочей памяти, ограничено, поэтому логично будет освоить максимально много концептуальных строительных блоков. Развив в себе хорошее интуитивное понимание логарифмических выражений, вы будете ощущать себя бесконечно увереннее в работе с уравнениями, включающими в себя логарифмы, и сможете справляться с уровнем сложности, который раньше считали немыслимым. А ещё они будут меньше пугать или отвлекать вас, когда встретятся в каком-то другом контексте.
Читать дальше →
Total votes 59: ↑56 and ↓3+72
Comments29

Что бы я хотел знать до переноса 50 000 строк кода на серверные компоненты React

Reading time19 min
Views18K

Серверные компоненты React – это большой кусок работы. Недавно мы переосмыслили нашу документацию и устроили ребрендинг Mux. Пока мы этим занимались, мы перенесли весь материал сайтов mux.com и docs.mux.com на серверные компоненты. Так что, поверьте мне… я знаю. Знаю, что это возможно, не так страшно и, в принципе, что дело того стоит.

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

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

Лида, все пропало! Сезон стартует через 2 недели! Или как не запороть продажи в сезон при запуске рекламы?

Reading time6 min
Views934

Правдивый опус о провальном сезоне и недополученной прибыли глазами генерального директора Игоря Сергеевича и маркетолога Лидочки.

Читать далее
Total votes 8: ↑5 and ↓3+8
Comments0

Core Data в современном интерьере SwftUI. Взаимосвязь объектов. Динамический @FetchRequest. часть 2

Reading time18 min
Views2.5K
В первой части этой статьи мы рассмотрели основы работы с Core Data в SwiftUI на примере шаблонного приложения, предложенное Apple. Это было тривиальное приложение, в котором всего лишь один объект Core Data с одним единственным атрибутом, и тем не менее было показано, что давая объектам Core Data дополнительную функциональность с помощью „синтаксического сахара“ в расширении extension их классов class, автоматически генерируемых Xcode, можно добиться комфортной работы с Core Data в SwiftUI. Эти классы являются миниатюрными ViewModels для наших SwiftUI Views, так как они реализуют протоколы ObservableObject и Identifiable. И Apple научила их прекрасно «играть» на поле реактивности SwiftUI.

Во второй части статьи я хочу показать, что роль автоматически генерируемых Xcode классов class для объектов Core Data существенно возрастает при работе с реальными взаимосвязанными объектами — рейсами Flights, аэропортами Airports и авиакомпаниями AirLines, которые мы получаем в интернете на сайте компании FlightAware и размещаем в локальной базе данных Core Data.

Создаваемое в этой части статьи приложение с именем CoreDataSwiftUIFlights является сильно упрощенной модификацией реального приложения Enroute из стэнфордских курсов CS193P 2020, которое оперативно подкачивает данные с сервера FlightAware и требует от вас платной подписки на сервис FlightAware .

Однако, просто зарегистрировавшись на сайте компании FlightAware, вы можете бесплатно получить временной срез любой интересующей вас информации о рейсах Flights, аэропортах Airports и авиакомпаниях Airlines в JSON формате. Эти данные размещаются в Core Data с учетом взаимосвязей этих объектов, и вы можете не просто видеть всю информацию о рейсах, но и делать различные запросы к ней с помощью фильтров и сортировать ее нужным вам способом.



Код находится на Github.
Читать дальше →
Total votes 1: ↑1 and ↓0+1
Comments0

Core Data в современном интерьере SwiftUI. Некоторые уточнения и заблуждения. часть 1

Reading time22 min
Views7.7K
Фреймворк Core Data, разработанный Apple для постоянного хранения данных на своих платформах, эффективно работающий даже с очень большими объемами данных, используется очень давно, с версии iOS 3 и macOs 10.4, так что прошло где-то порядка 10 лет с того момента, когда Apple впервые представила фреймворк Core Data. Когда это произошло, языка программирования Swift вообще не было в проекте, так что Core Data была спроектирована с ориентацией на Objective-C и, конечно, это отразилось на её API.



Но на WWDC 2019 был впервые представлен SwiftUI, который предложил нам новую парадигму конструирования UI, он был предложен для iOS 13 и полностью опирался на Swift, его корни — это Swift, хотя он использует UIKit “под капотом” и полностью зависит от UIKit на iOS, по крайней мере на данный момент, и от AppKit на macOS. Конечно, он это скрывает, как только может, он сконструирован и реализован с прицелом на Swift. Более того, Swift сам был существенно доработан с целью поддержки SwiftUI и стал ещё более мощным и интересным.

Но дело даже не в возрастном различии фреймворков, a в том, что Core Data принципиально связана с объектно-ориентированным программированием ( классы, наследование, делегирование и все такое), a суперсовременный SwiftUI основан на декларативном функциональном программировании (структуры, протокольно-ориентированное программирование) и имеет реактивную природу, которая воплощается в использовании архитектуры MVVM.
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments2

Делай нейминг как сеньор

Reading time13 min
Views120K

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

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

Читать далее
Total votes 148: ↑146 and ↓2+182
Comments221

Организация react-компонентов с помощью dot-notation и почему я часто прибегаю именно к этому способу

Reading time11 min
Views21K

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

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

Сегодня я бы хотел с вами поделиться одним из моих любимых паттернов организации сложных react-компонентов, рассказать о его сильных и слабых сторонах (да, некоторые минусы есть). Однако сперва для того, чтобы оценить сильные стороны данного подхода, нужно погрузиться в процесс разработки нового react компонента и сопутствующие ему проблемы, которые подход помогает решить.

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

Авторизация в PostgreSQL. Часть 1 — Роли и Привилегии

Reading time11 min
Views38K
image

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

Несмотря на важность темы, авторизация в базе данных являлась моим слабым местом в начале карьеры. NoSQL был самым крутым парнем на районе, а мир веб-разработки соблазняли фреймворки (например Rails), которые давали более приятный опыт разработки, нежели сложные SQL-скрипты. Но мир меняется. SQL и реляционные базы данных снова оказались в центре внимания, поэтому важно научиться пользоваться ими безопасно и эффективно. В этой серии статей я раскрою основные области авторизации в базах данных с акцентом на PostgreSQL, поскольку это одна из самых зрелых и функциональных СУБД с открытым исходным кодом.
Читать дальше →
Total votes 10: ↑7 and ↓3+6
Comments1

Авторизация в PostgreSQL. Часть 2. Безопасность на уровне строк

Reading time10 min
Views9K
image
Приветствую вас в очередном разборе инструментов авторизации PostgreSQL. В первых двух разделах предыдущей статьи мы обсуждали, чем интересна авторизация в PostgreSQL. Вот содержание этой серии материалов:

  • Роли и привилегии;
  • Безопасность на уровне строк (мы сейчас здесь);
  • Производительность безопасности на уровне строк (coming soon!);

В первой статье мы рассмотрели, как роли и предоставленные привилегии влияют на действия (запросы SELECT, INSERT, UPDATE и DELETE) в отношении объектов БД (таблиц, представлений и функций). Та статья закончилась небольшим клиффхэнгером: если вы создадите многопользовательское приложение, используя только роли и привилегии для авторизации, то ваши пользователи смогут удалять данные друг друга, а может и вообще друг друга. Необходим другой механизм, позволяющий ограничить пользователей чтением и изменением только собственных данных — механизм безопасности на уровне строк (RLS).
Читать дальше →
Total votes 11: ↑10 and ↓1+12
Comments2

SwiftUI — Custom NavigationView

Reading time12 min
Views4.1K

В публикации мы рассмотрим альтернативу NavigationView т.к. он переодически выкобенивается и отказывается работать надлежащим образом.

Альтернатива кастомная, не использует UIKit, подача материала простая (насколько смог упростить), каждый момент постарался разобрать максимально подробно.

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

Читать
Total votes 2: ↑2 and ↓0+2
Comments0

Греческая мифология и астрономия

Reading time14 min
Views19K
image

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

Казалось бы, нет суровее науки. В ней не может быть никаких «ученым показалось…» или «ученые думают, что…» — ученые теперь лишь публикуют 100 раз проверенные данные и 100500 раз перепроверенные выводы из этих данных.

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

Но есть у астрономии одно удивительное свойство, которого нет ни у какой другой точной или естественной науки.

Астрономия насквозь мифологична.

Читать дальше →
Total votes 36: ↑34 and ↓2+41
Comments10

Information

Rating
1,960-th
Location
Украина
Registered
Activity