Обновить
-15
0

Пользователь

Отправить сообщение

Аллен Ву — «пешка», ставшая «конем» в шахматной партии США и Китая

Время на прочтение4 мин
Количество просмотров43K
image

4-июня глава китайского подразделения ARM (Arm China) отказался сдавать полномочия и нанял частную охрану для защиты штаб-квартиры от въезда нового руководства или представителей ARM. Британское крыло ARM и его японские владельцы из SoftBank в растерянности. Они утверждают, что от конфликта первыми пострадают китайские разработчики.
Читать дальше →

Исключительно быстрая валидация UTF-8

Время на прочтение4 мин
Количество просмотров9.5K
Текстовая строка — один из самых распространённых «типов данных» в программировании. Когда программисты думают о строке, то представляют список или массив символов. Это «достаточно хорошее» приближение, но реальность сложнее.

Символы должны быть каким-то образом закодированы в биты. Большинство строк в интернете, включая этот пост на Хабре, закодированы в UTF-8. Формат UTF-8 представляет «символы» в одном, двух, трёх или четырёх байтах. Это обобщение для стандарта ASCII, использующего только один байт на символ. То есть строка ASCII также является строкой UTF-8.

На самом деле всё немного сложнее, потому что технически UTF-8 описывает кодовые точки. Видимый символ типа эмодзи может состоять из нескольких кодовых точек… но большинству программистов эти педантичные формулировки не нужны.
Читать дальше →

Сложение двух чисел с плавающей запятой без потери точности

Время на прочтение9 мин
Количество просмотров83K
Здравствуйте, друзья, как вы думаете, если мы напишем такой код:

s = a+b;
z = s-a;
t = b-z;

то не кажется ли вам, что в результате его выполнения получится, что t=0? С точки зрения привычной математики действительных чисел это и правда так, а вот с точки зрения двоичной арифметики с плавающей запятой в переменной t будет кое-что другое. Там будет то, что спасает нас от потери точности при сложении чисел $a$ и $b$. Кого интересует данная тема, прошу под кат.

Как обнаруживать перемещение атакующих по сети

Время на прочтение8 мин
Количество просмотров8.8K

На проектах по анализу защищенности корпоративных информационных систем в 2019 году нашим пентестерам удалось преодолеть сетевой периметр 93% компаний. При этом в сеть 50% компаний можно было проникнуть всего за один шаг. Чтобы не дать реальным атакующим достичь цели, важно вовремя выявлять их активность. Один из критически важных этапов атаки — перемещение внутри периметра (lateral movement), когда злоумышленники расширяют свое присутствие в сети.

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

Читать далее

В пещерах этого не было

Время на прочтение7 мин
Количество просмотров92K
Есть такой момент в человеческой психологии, что многие вещи, услышанные в течение жизни, начинают восприниматься как нечто само собой разумеющееся — как гравитация или магнетизм, хотя их просто кто-то когда-то придумал. От этой напасти в мозгу есть лайфхак – «В пещерах такого не было», об этом я сегодня выскажусь в плане IT.

image

Глава 0. Base-1


Когда я учился в школе (199x) все сидели на Pascal – язык чёткий, мудрый, на нём даже Dos Navigator был написан c VESA скринсейверами, а позже The Bat!, и олимпиадники ACM ICPC в 2000-е годы были в основном паскалистами. Мне из-за любви к играм и графике в то время зашёл C/C++, и сразу же в глаза бросилось фундаментальное различие – от ноля или единицы индексируются массивы, это до сих пор приходится уточнять на том же hackerrank.com.
Читать дальше →

Почему пара и кортеж — это чаще всего плохо

Время на прочтение4 мин
Количество просмотров21K

Многим программистам знакомы концепции пар и кортежей (pair и tuple) — их реализации есть в STL, Boost (и может быть где-нибудь еще). Для тех, кто не знает, что это такое, я коротко поясню — это шаблоны, позволяющие сгруппировать несколько значений (пара — только 2, tuple — много) с целью хранить\передавать\принимать их вместе.
Пример из MSDN:
   pair <int, double> p1 ( 10, 1.1e-2 );
   pair <int, double> p2 = make_pair ( 10, 2.22e-1 );
   cout << "The pair p1 is: ( " << p1.first << ", " << p1.second << " )." << endl;
   cout << "The pair p2 is: ( " << p2.first << ", " << p2.second << " )." << endl;
 

Поначалу идея кажется заманчивой, ведь:
  1. Вместо передачи в функцию нескольких векторов одинаковой размерости можно передать только один вектор пар\кортежей, не заботясь о проверке их соответствия.
  2. Можно легко вернуть из функции набор значений, не мороча голову с указателями или ссылками в out-параметрах (для многих это сложно)
  3. Можно избежать создания кучи мелких структур из 2-3 полей (меньше кода — лучше).
Но есть и тёмная сторона этой силы.
Читать дальше →

Не нужно делать из фреймворков культ — они не настолько сложны, чтобы делить людей на React и Angular разработчиков

Время на прочтение6 мин
Количество просмотров21K


Недавно меня позвали гостем в «Тяжелое утро с Holy.js», чтобы хорошенько пропесочить за мою статью про глупцов-фронтендеров. Мы обстоятельно поговорили, и один из аргументов был такой — если наши js фреймворки жрут неоправданно много на простых задачах — просто не используй их. Если тебе просто надо порендерить четыре формы, то тебе не нужен ни реакт, ни тайпскрипт, ни вебпак — ничего. Создаешь три файлика .html, .css и .js — вот тебе и приложение.

Ничего не надо никуда билдить, никакого стат анализа, и никакой прожорливой и тормозной ноды на твоей машине — все быстро и просто. Так можно строить и достаточно большие приложения — ведь тот же vs code вполне себе может тайпчекать твой js. Другие проблемы, которые можно решать большими фронтенд инструментами во-первых часто выдуманы их создателями, а во вторых если и создают большую боль — то только на действительно больших приложениях.
Читать дальше →

Ленивая инициализация в C#

Время на прочтение4 мин
Количество просмотров36K
Отложенная инициализация или «ленивая» инициализация — это способ доступа к объекту, скрывающий за собой механизм, позволяющий отложить создание этого объекта до момента первого обращения. Необходимость ленивой инициализации может возникнуть по разным причинам: начиная от желания снизить нагрузку при старте приложения и заканчивая оптимизацией редко используемого функционала. И действительно, не все функции приложения используются всегда и, тем более, сразу, потому создание объектов, реализующих их, вполне рационально отложить до лучших времён. Я хотел бы рассмотреть варианты ленивой инициализации, доступные в языке C#.
Читать дальше →

Автоматизация рабочего процесса Java-проекта с помощью модифицированной модели ветвления Gitflow

Время на прочтение14 мин
Количество просмотров5.9K

Автоматизация рабочего процесса Java-проекта с помощью модифицированной модели ветвления Gitflow


Ключевые выводы


  • Gitflow — это совместная модель ветвления, которая пытается использовать мощность, скорость и простоту ветвления Git. Этот метод хорошо работал в ситуации, которую мы описываем здесь, но другие отмечали, что использование Gitflow сопряжено со своими проблемами.
  • Документация по использованию Gitflow в размещения в источнике информации в лучшем случае является нечеткой.
  • Функции изолированы внутри ветвей. Вы можете управлять своими собственными изменениями функций изолированно. Этот подход отличается от разработки на основе магистралей, когда каждый разработчик фиксируется в основной ветке не реже одного раза в 24 часа.
  • Разделение функций с использованием изолированных ветвей позволяет вам решить, какие функции включать в каждый релиз. Компромисс здесь может заключаться в сложных слияниях.

Читать дальше →

Одностраничный устав ООО с двумя директорами электронно и открытие счёта в банке дистанционно

Время на прочтение6 мин
Количество просмотров14K

Надоело заморачиваться с доверенностями, банками, судами, госорганами и решили прописать в Устав второго директора. Плюс заодно избавиться от дурацкого большого устава давно было желание, чтобы не копировать толстый устав на тендеры и крупным заказчикам. Но коллеги говорили, что будет не солидно, возникнут вопросы при рассмотрении устава юристами контрагентов, которые должны оправдывать свою зарплату. И всё как-то не решались. Но год назад решились. Сделали одностраничный устав. Кстати, в поиске в Яндекс.Картинках не нахожу одностраничного устава в электронном виде. Наш первый значит будет. Год прошёл — полёт нормальный, проблем нет. Солидность не пострадала. Банк устав принял, второго директора признал. Хотя тупил страшно. Дальше о том, что должно быть в одностраничном Уставе, какие трудности были с регистрацией в налоговой и с банком. Мы всё хотели сделать принципиально в электронном виде и удалённо.

Читать далее

А ваш CDN умеет так?

Время на прочтение4 мин
Количество просмотров5.1K


Изображение взято с сайта www.aerotime.aero


Всем привет, меня зовут Семён, я руковожу разработкой партнёрских сервисов в ДомКлике. Недавно, работая над оптимизацией загрузки страниц, я наткнулся на интересную заметку от Cloudflare о приоритизации потоков при работе с CDN. Я заинтересовался и решил проверить, поддерживает ли наш CDN эту опцию стандарта HTTP/2? Тех, кому интересно узнать больше, прошу под кат, где мы рассмотрим механизм приоритизации HTTP/2-потоков и протестируем работу некоторых CDN.

Читать дальше →

Услышал интересное мнение по поводу лэндингов. Согласны или нет?

Время на прочтение4 мин
Количество просмотров3.7K
Само слово “лэндинг” это некоторый миф. Некая расплывчатая сущность, которая выдает поверхностную местечковую работу за качественный и полномасштабный проект. Еще десять лет назад – лэндингом называли простую разметку текста под размещение графики и контента. Далее это понимание трансформировалось в посадочную страницу для выдачи в результате ранжирования поисковых систем. После чего эта же посадочная страница стала использоваться вообще на все случаи жизни, и в конце концов превратилась в отдельностоящий продукт, который при минимальных затратах (как финансовых, так и смысловых) подменил собой полноразмерный сайт. Причем информационная часть осталась только на 5%, все остальное заменили собой блоки не несущие практически никакой интеллектуалльной нагрузки, кроме некоторой псевдо-визуализации. Давайте разберемся почему эволюционно случилось так, что это копеечную поделку стали воспринимать как обособленную разработку.
Читать дальше →

«Скользкие» места C++17

Время на прочтение9 мин
Количество просмотров37K
image

В последние годы C++ шагает вперед семимильными шагами, и угнаться за всеми тонкостями и хитросплетениями языка бывает весьма и весьма непросто. Уже не за горами новый стандарт, однако внедрение свежих веяний — процесс не самый быстрый и простой, поэтому, пока есть немного времени перед C++20, предлагаю освежить в памяти или открыть для себя некоторые особо «скользкие» места актуального на данный момент стандарта языка. 

Сегодня я расскажу: почему if constexpr не является заменой макросов, каковы «внутренности» работы структурного связывания (structured binding) и его «подводные» камни и правда ли, что теперь всегда работает copy elision и можно не задумываясь писать любой return. 

Если не боишься немного «испачкать» руки, копаясь во «внутренностях» языка, добро пожаловать под кат.
Читать дальше →

Stand alone. Sometimes

Время на прочтение6 мин
Количество просмотров17K
Есть на свете странные люди. Программисты, за которыми не надо проверять ни работоспособность решения, ни качество кода. Руководители проектов, которых не надо контролировать. Тимлиды, которые никогда не говорят «ну, не шмогла я…».

У них тоже случаются провалы, но рука не поднимается, голос не повышается их критиковать или песочить. Ты как будто понимаешь – этот человек точно сделал всё, что было в его силах.

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

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

Прошерстив всех знакомых за 15 лет, которые подходят под приведенное описание, в т.ч. самого себя, я пришел к выводу: причина в том, что эти люди когда-то оставались в одиночестве. Только его формы были разными.
Читать дальше →

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

Время на прочтение7 мин
Количество просмотров45K


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

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

Стандартная просьба, каких десятки, и нужно такое же хорошее стандартное решение. Мы сказали «окей», и через 2-3 недели все было готово. Работу они приняли и начали переезжать на новый кластер Кликхауса с помощью нашей утилиты.
Читать дальше →

7 бесплатных книг, которые следует прочитать каждому дата-сайентисту

Время на прочтение4 мин
Количество просмотров15K


Самообразование — пожалуй, один из самых сложных путей и процессов для взрослого человека. Когда вокруг столько отвлекающих факторов, уже трудно заставить себя довести дело до конца (особенно если мотивация неочевидна). Но самообразование как эволюция — это неотъемлемый элемент жизни любого профессионала или того, кто хочет им стать. Книги в этом случае могут стать тем самым выстрелом, которым убиваются два зайца, вы и растете как специалист, и не «выпадаете из жизни». Автор материала подобрал 7 бесплатных электронных книг, которые помогут вам изучать Data Science и ML.
Читать дальше →

Как северокорейские хакеры отмывают краденую криптовалюту на миллиарды долларов

Время на прочтение4 мин
Количество просмотров13K

Сама кража для хакеров из Пхеньяна – дело несложное. Другой вопрос – как потом получить реальные деньги.




Много лет династия Ким из Северной Кореи получала деньги через незаконные схемы типа торговли наркотиками и подделки валют. За последнее десятилетие Пхеньян всё чаще начал обращаться к киберпреступлениям – используя армию хакеров для осуществления ограблений банков и обменников криптовалют на миллиарды долларов. К примеру, в 2018 году была проведена атака, благодаря которой за один раз удалось увести $250 млн. ООН говорит, что в результате этих действий режим получает значительные суммы денег, которые тратит на разработку ядерного оружия, способного гарантировать его выживание в течение долгого времени.

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

3 года программирования вслепую. Часть 1

Время на прочтение6 мин
Количество просмотров22K
Всем доброго времени суток! Хочу поделиться своим опытом из разряда «Войти в IT». Тем более, что он происходил в полностью невизуальном режиме. О незрячих людях в нашем обществе знают мало, а о незрячих программистах еще меньше. И эта статья предлагает проследить за тем, как и откуда они появляются, хоть бы и на моем примере.

Статья не несет в себе никакой практической пользы. Разве что кто-то сумеет получить с ее помощью небольшой мотивационный заряд и попрокрастинировать.
Читать дальше →

SDR DVB-T2 receiver на C++

Время на прочтение4 мин
Количество просмотров20K

Software Defined Radio (программно-определяемая радиосистема) — это метод замены работы по металлу (что, в принципе, полезно для здоровья) на головную боль программирования. SDR пророчат большое будущее и основным достоинством считается снятие ограничений в реализации радиопротоколов. Примером является метод модуляции OFDM (Orthogonal frequency-division multiplexing), которая стала возможна только методом SDR. Но есть в SDR и еще одна, чисто инженерная возможность, — это возможность контролировать и визуализировать сигнал в любой произвольной точке с наименьшими усилиями.


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


Если серьёзно, DVB-T2 разработан с очень широкими возможностями, в том числе:


  • indoor применение
  • модуляция от QPSK до 256QAM
  • полоса пропускания от 1,7MHz до 8MHz
Читать дальше →

Квантовые эффекты приходят в макромир

Время на прочтение13 мин
Количество просмотров26K

Новые эксперименты раскрывают возможности крупномасштабных квантовых устройств



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

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

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность