Pull to refresh
-11
Karma
0
Rating

В Telegram стала доступна регистрация без физической СИМ-карты — за 990 рублей (9 TON)

Information Security *Instant Messaging *Web services monetization *Social networks and communities IT-companies


6 декабря 2022 года в Telegram стала доступна регистрация в мессенджере без физической СИМ-карты. На площадке Fragment примерно за 990 рублей (9 TON) можно купить случайный анонимный номер +888 ХХХХ ХХХХ, собственность которого реализована через NFT. Заплатив один раз, пользователь будет владеть номером, пока не продаст его на аукционе. Инструкция, как купить анонимный виртуальный номер +888 и регистрироваться в Telegram без СИМ-карты.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Views 38K
Comments 157

Заблуждения программистов о времени

IT systems testing *Programming *System Analysis and Design *IT Standards *

Музей-скансен эпохи Средневековья в Дании в режиме обычной работы (слева) ставит целью воссоздать повседневную жизнь города на стыке XIV и XV веков. Для съёмок фильма (справа) он «погрязнел»

Для киносъёмок в музей под открытым небом Middelaldercentret внесли несколько изменений. Вместо аккуратной каменной улицы развели неприятную кашицу из грязи, не самые роскошные стеклянные окна прикрыли досками и развесили везде выцветшее тряпьё. Здания как следует измазали чем-то коричневым, кое-где зачем-то перемешав субстанцию с соломой. В случайное здание воткнули факел, а не попытались изобразить лучину или фонарь.

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

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

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

Заблуждение 1. В сутках 24 часа или 86 400 секунд


Иногда и кое-где стрелки часов переводят, создавая сутки длиной в 23 и 25 часов — всё очевидно. Будет неплохо углубиться в случаи поэкзотичней.
Читать дальше →
Total votes 191: ↑184 and ↓7 +177
Views 65K
Comments 313

Заблуждения программистов относительно времени

IT systems testing *Perfect code *IT Standards *
Translation
За последние пару лет я потратил много времени на дебаггинг чужих тестов. Это была интересная работа, иногда расстраивающая, но всегда поучительная. Кто-то может подумать, что в тестах нет багов, но конечно баги есть везде, и тесты не исключение.

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

На самом деле, я повидал так много заблуждений, которые оставляют след в чужих (и моих собственных) программах, что посчитал полезным составить список самых частых проблем.
Читать дальше →
Total votes 241: ↑218 and ↓23 +195
Views 83K
Comments 216

Не так страшен Rust, как его излагают

Programming *Rust *Studying in IT

Последние годы часто хвалят язык программирования Rust. Однако, без изучения синтаксиса и особенностей языка в нём сложно разобраться. Честно говоря, при первом просмотре дальше простых примеров я продвинуться не смог. Вроде догадываешься, что тут указываем тип переменных, амперсанд – это вроде “я только посмотреть”, но всё равно код складывался в некую мешанину иероглифов с кучей скобок и, на первый взгляд, случайно проставленных точек с запятыми. То ли дело Python, минимализм синтаксиса которого так привлекателен для неокрепших душ. Однако, так ли сложен Rust на самом деле или это миф? 

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

Так ли это?
Total votes 51: ↑42 and ↓9 +33
Views 20K
Comments 122

12 схем архитектуры английской грамматики

Reverse engineering *Education abroad IT-emigration Learning languages Natural Language Processing *

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

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

Читать далее
Total votes 36: ↑28 and ↓8 +20
Views 29K
Comments 86

Google Dorking или используем Гугл на максимум

Postuf corporate blog Information Security *

Вступление


Google Dorks или Google Hacking — техника, используемая СМИ, следственными органами, инженерами по безопасности и любыми пользователями для создания запросов в различных поисковых системах для обнаружения скрытой информации и уязвимостях, которые можно обнаружить на общедоступных серверах. Это метод, в котором обычные запросы на поиск веб-сайтов используются в полную меру для определения информации, скрытой на поверхности.
Читать дальше →
Total votes 37: ↑33 and ↓4 +29
Views 137K
Comments 7

Почему мьютексы в Rust реализованы именно так

Programming *Concurrent computing *Rust *
Translation

Я часто слышу от пробующих работать с Rust системных программистов жалобы на мьютексы и особенно на Rust Mutex API. Жалобы обычно выглядят так:

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

Такие изменения превратили бы Rust mutex API в эквивалент C/Posix mutex API. Однажды я даже видел, как один разработчик пытался использовать Mutex<()> и разные хитрости, чтобы его имитировать.

Однако у такого стремления есть проблема: эти два аспекта Mutex неразрывно связаны друг с другом, а также с гарантиями безопасности Rust в целом — изменение одного из них или обоих откроет возможности для возникновения незаметных багов и повреждений из-за гонок данных.

Использование API мьютексов в стиле C, состоящего из набора косвенно защищаемых данных и из функций lock и unlock было бы опрометчивым в Rust, потому что это позволяет безопасному коду легко вносить ошибки, нарушающие безопасность памяти и вызывающие гонки данных.

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

В этом посте я разберу типичный C mutex API, сравню его с типичным Rust mutex API, и расскажу о том, что произойдёт, если мы изменим Rust API так, чтобы он напоминал C.
Читать дальше →
Total votes 60: ↑60 and ↓0 +60
Views 11K
Comments 26

«Да я тебя по кошельку эфира вычислю!» или OSINT методики при работе с Ethereum

T.Hunter corporate blog Information Security *

Ethereum (ETH) он же Эфириум (a.k.a. Эфир) - вторая по популярности криптовалюта в мире, а также платформа для создания децентрализованных онлайн-сервисов на базе блокчейна, работающего на основе умных контрактов (смарт-контрактов).

Концепция второй криптовалюты была предложена ее создателем Виталиком Бутериным в конце 2013 года, а сеть была запущена 30 июля 2015 года. Но это дорогой читатель ты уже скорее всего знаешь и без меня :)

В данной статье мы рассмотрим простые методы и приемы исследования Ethereum, которые применяет в своей работе OSINT-специалист.

DISCLAIMER: Данная статья написана в ознакомительных целях и не является руководством к неправомерным действиям или обучающим материалом для сокрытия правонарушений.

 

Читать далее
Total votes 10: ↑9 and ↓1 +8
Views 3.7K
Comments 1

Подготовка рабочей среды для создания смарт-контрактов Solidity

Solidity *Cryptocurrencies
Tutorial

Прежде чем заняться изучением смарт-контрактов Ethereum, необходимо подготовить рабочую среду — установить операционную систему (ОС) Ubuntu, клиента Geth сети Ethereum, а также другое необходимое программное обеспечение (ПО).

Мы могли бы приступить к работе сразу в какой-либо интегрированной среде разработки (IDE, Integrated Development Environment), например, Remix. Возможно, это был бы самый быстрый путь к изучению смарт-контрактов Solidity. Однако для того, чтобы глубже разобраться в работе Ethereum, мы начнем с базовых инструментов.

Читать далее
Total votes 4: ↑2 and ↓2 0
Views 5.6K
Comments 2

CSRF-уязвимости все еще актуальны

Конференции Олега Бунина (Онтико) corporate blog Information Security *Website development *
CSRF (Сross Site Request Forgery) в переводе на русский — это подделка межсайтовых запросов. Михаил Егоров (0ang3el) в своем докладе на Highload++ 2017 рассказал о CSRF-уязвимостях, о том, какие обычно используются механизмы защиты, а также как их все равно можно обойти. А в конце вывел ряд советов о том, как правильно защищаться от CSRF-атак. Под катом расшифровка этого выступления.


О спикере: Михаил Егоров работает в компании Ingram Micro Cloud и занимается Application security. В свободное время Михаил занимается поиском уязвимостей и Bug hunting и выступает на security-конференциях

Дисклаймер: приведенная информация является сугубо мнением автора, все совпадения случайны.


В том, что CSRF-атаки работают виноват этот Cookie-монстр. Дело в том, что многие веб-приложения используют куки (здесь и далее считаем уместным называть cookies по-русски) для управления сессией пользователя. Браузер устроен так, что, если у него есть куки пользователя для данного домена и пути, он их автоматически отправляет вместе с HTTP-запросом.
Total votes 54: ↑54 and ↓0 +54
Views 57K
Comments 20

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

Network technologies *Machine learning *
Sandbox
Translation

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

Результаты экспериментов, проведенных с рядом контрольных функций затрат, показывают, что динамическая кольцевая топология, разработанная для нашей конкретной цели, приводит к лучшей производительности по сравнению с другими сетевыми топологиями. Также сравнивается производительность предлагаемого алгоритма оптимизации с классическими и современными оптимизаторами основанные на популяции, а именно с Генетическим алгоритмом, Оптимизацией Роя частиц с Бинарной гибридной топологией, Оптимизацией Роя частиц с выборочным информированием, Дифференциальной эволюцией с бинарным обучением и Дискретной Искусственной Пчелиной Колонией. Сравнения, основанные на экспериментальном анализе, показывают, что предлагаемый оптимизатор, основанный на консенсусе, является наиболее эффективным.

Читать далее
Total votes 2: ↑2 and ↓0 +2
Views 1.8K
Comments 1

Сборник тестовых заданий для Product Manager

Product Management *IT career

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

Собрал подборку из 30 тестовых заданий для Product Manager и Product Marketing Manager от реальных IT, EdTech и FinTech компаний России и мира. Уровень вакансий Junior и Middle.

Читать далее
Total votes 4: ↑3 and ↓1 +2
Views 7.4K
Comments 1

Язык программирования типов, скрытый в TypeScript. Utility Types

JavaScript *Programming *TypeScript *

TypeScript — это язык, расширяющий JavaScript, добавляя в последний типизацию. Правда, так как TypeScript не имеет runtime-а (почти), он транслируется в JavaScript, в процессе чего, вся типизация теряется. Такую типизацию можно назвать лишь инструментом статического анализа кода. Тем не менее — это очень мощный инструмент. К тому же, помимо проверки кода, типизация также и документирует его.

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

Читать далее
Total votes 23: ↑22 and ↓1 +21
Views 12K
Comments 2

Продвинутый TypeScript

Конференции Олега Бунина (Онтико) corporate blog Website development *JavaScript *Programming *TypeScript *
Фридайвинг — ныряние на глубину без акваланга. Ныряльщик ощущает на себе закон Архимеда: он вытесняет некоторый объём воды, который выталкивает его обратно. Поэтому первые несколько метров даются тяжелее всего, но потом сила давления толщи воды над тобой начинает помогать двигаться глубже. Этот процесс напоминает изучение и погружение в системы типов TypeScript — по мере погружения становится немного легче. Но надо не забыть вовремя вынырнуть.


Фотография с сайта One Ocean One Breath.

Михаил Башуров (saitonakamura) — Senior Frontend Engineer в компании WiseBits, фанат TypeScript и фридайвер-любитель. Аналогии изучения TypeScript и ныряния на глубину не случайны. Михаил расскажет, что такое discriminated unions, как использовать вывод типов, зачем нужна номинальная совместимость и брендирование. Задержите дыхание и погружайтесь.
Total votes 33: ↑30 and ↓3 +27
Views 20K
Comments 3

JavaScript редактор SVG диаграмм который весит в 6,5 раз меньше bootstrap (библиотека с открытым исходным кодом)

Website development *JavaScript *ASP *TypeScript *WebAssembly *

Demo | GitHub

Эксперименты с созданием редактора диаграмм на Blazor Webassembly (Blazor WebAssembly: Drag and Drop в SVG, Blazor WebAssembly: соединительные линии в SVG) показали что технология не годится для интенсивных манипуляций с DOM.

То что будут проседания было известно заранее: WebAssembly не имеет доступа к DOM, любые изменения только через вызовы JavaScript. Задержки оказались такими большими, что перетаскивание на мобильном тормозило уже после добавления третьей фигуры.

Читать далее
Total votes 41: ↑39 and ↓2 +37
Views 12K
Comments 17

СТРАННЫЕ Люди. Как западная цивилизация вырвалась вперед?

Popular science Brain Biology

По нашей планете распространяется необычная и СТРАННАЯ человеческая психика - Western, Educated, Industrialized, Rich and Democratic (WEIRD) - западный, образованный, индустриальный, богатый и демократичный.

Читать далее
Total votes 204: ↑193 and ↓11 +182
Views 84K
Comments 608

«Я не ответственный, я — Responsible» — как объяснить бабушке, что такое RACI-матрица

Timeweb Cloud corporate blog Development Management *Project management *Product Management *Popular science


Приехала я год назад к друзьям играть в настолки. А они ссорятся. Из-за того, что Маша сказала Саше вынести мусор / убрать носки / погулять с хомяком, а он не сделал, потому что тупо забыл. Рассказала я Саше и Маше про ToDoList и таск-трекеры и нарисовала им на холодильнике импровизированную асану. Маша наклеила стикеры с задачами и сроками, Саша терпеливо кивнул. Настолки состоялись.

Недавно я снова заглянула в гости. Стикеры на холодильнике висят, а Маша и Саша опять ссорятся. Точнее, громко выясняют, кто хотел починить стол / вывести холодильник / искупать кота, кто по-факту должен был это делать, и почему до сих пор ничего не сделано. Я промолчала, т.к. в чужие семейные разборки со своим PMBOK-ом не лезут.

Но потом решила, что всё нормально, лезут, т.к. вспомнила, что видела RACI-матрицу для распределения ответственности с шуточным объяснением через поездку семьи на дачу. Полезла искать эту картинку для Саши с Машей, нашла, а в ней куча ошибок:



Простите. Не могу промолчать. Не надо так.
Читать дальше →
Total votes 86: ↑80 and ↓6 +74
Views 32K
Comments 45

Кунг-фу стиля Linux: делиться — это плохо

RUVDS.com corporate blog Configuring Linux *System administration **nix *
Translation
В детском саду вы узнали о том, что делиться — это хорошо. Но, если речь заходит о компьютерной безопасности, часто оказывается, что не всё так однозначно. Концепция пространств имён (namespaces) появилась в ядре Linux начиная с версии 2.6.24. Это случилось много лет назад, но использование пространств имён не стало массовым явлением, несмотря на то, что существуют инструменты для работы с ними. Разумеется, задумываться о пространствах имён нужно далеко не всегда. Но это одна из тех вещей, которые, если в них возникает необходимость, дают нам просто бесценные возможности. Если описать эти возможности в двух словах, то получится, что пространства имён позволяют предоставить процессу его собственные, приватные ресурсы, и, что важнее, запретить процессу доступ к ресурсам из других пространств имён.



На самом деле мы, работая в Linux, постоянно пользуемся этой концепцией. Каждый запускаемый нами процесс существует в среде, описываемой неким набором пространств имён. Почему я говорю тут о «наборе» пространств имён? Дело в том, что существуют пространства имён, используемые для управления различными ресурсами. Например, можно настроить особое сетевое пространство имён, которое позволит предоставить процессу его собственный набор сетевых ресурсов — таких, например, как таблицы маршрутизации и правила файрвола.

Поговорим о том, как в Linux организована работа с пространствами имён, и о том, что они скрывают.
Читать дальше →
Total votes 48: ↑46 and ↓2 +44
Views 28K
Comments 4

Лучшие стратегии разработки фронтенда в 2022 году

RUVDS.com corporate blog Website development *JavaScript *Programming *
Translation
Эта статья специально написана так, чтобы ставить перед читателями неоднозначные задачи, вызывать у них противоречивые чувства и давать им пищу для размышлений. Речь здесь пойдёт о множестве свежих идей, о которых вы, вероятнее всего, пока не слышали.

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



Ещё я постараюсь выражать свои мысли как можно проще — так, чтобы даже люди, не являющиеся разработчиками, смогли бы, хотя бы в общих чертах, меня понять.
Читать дальше →
Total votes 41: ↑36 and ↓5 +31
Views 24K
Comments 33

Information

Rating
Does not participate
Registered
Activity