Интернет создавался прежде всего как свободная система обмена информацией между людьми, но сейчас он сильно зарегулирован, и перестал быть таким свободным, каким он был в начале. Я не хочу обсуждать надо или не надо регулировать обмен информацией между людьми, но лично меня не устраивает такое обилие регуляторов и генерируемый ими поток запретов и блокировок информации.
Разработка
Room для Kotlin Multiplatform. Пробуем нативное решение
Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. В начале мая Google нас порадовали релизами нескольких библиотек для локальных хранилищ. Наконец, в приложения Kotlin Multiplatform можно полноценно использовать Room (версия 2.7.0-alpha01 и выше).
И сегодня мы опробуем работу с данной библиотекой на примере небольшого приложения Todo, написанного на KMP с использованием Compose Multiplatform.
Кроме Room, в проекте используется библиотека Lifecycle-viewmodel для KMP. И Koin для DI и гармонии.
Оптимизация CROSS JOIN — первые шаги
Различные СУБД предлагают широкий набор разновидностей операторов JOIN для таблиц. Если Вам встретилась проблема с производительностью CROSS JOIN, - например, декартово произведение таблицы с миллионом записей самой на себя, - добро пожаловать, в этой статье перечислены простейшие способы избавиться от CROSS JOIN.
Конечно, можно пересмотреть и упростить саму бизнес-логику или способы расчетов, в данной статье рассмотрены некоторые базовые случаи, про которые не стоит забывать и имеет смысл проверять первыми. Надеюсь, они окажутся релевантными или смогут помочь найти другие SQL оптимизации.
Примеры в статье рассматриваются на основе CROSS JOIN из ClickHouse. Текущая версия ClickHouse не оптимизирует CROSS JOIN автоматически. Также стоит отметить, что поскольку часто SQL запросы не пишутся вручную, а, например, собираются по частям программно, то перечисленные далее случаи вполне реальны.
Не будьте героем
Привет, Хабр! Я Женя Кучерявый, директор по фронтенду в Rentu. В этой статье расскажу как мы переезжали с Vue2 на Vue3, какие шишки набили и чему научились. Статья не хардовая.
Истории
Путь в ИБ глазами управленца
Здравствуйте! Я Александр Шульман, руководитель компании Active в которой мы уже несколько лет занимаемся амбициозным проектом — пишем продукт для обеспечения кибербезопасности и достигли первых результатов: полгода назад мы получили аккредитацию от Минцифры, попали в реестр отечественного софта и у нас открылись продажи. Я хочу поделиться своим опытом и представлениями о рынке кибербезопасности с вами с позиции управленца, а не от лица специалиста ИБ, хочу рассказать о своих разочарованиях, открытиях и о том, как в итоге у нас в команде родилась идея сделать свой вклад в рынок ИБ. Мне кажется, что это многим будет интересно, т.к. рынок ИТ активно движется в сторону информационной безопасности по причинам регуляции и по причине роста реальных угроз, а значит, все больше менеджеров и управленцев столкнется с вызовами по кибербезопасности.
Спецификация уникальных идентификаторов UUIDv7 для ключей баз данных и распределенных систем по новому стандарту RFC9562
Долгожданный стандарт RFC9562 "Universally Unique IDentifiers (UUID)" с тремя новыми версиями идентификаторов UUID (6, 7 и 8) вместо малопригодного RFC4122 наконец-то вступил в силу. Я участвовал в разработке нового стандарта. Обзор стандарта можно посмотреть в статье.
Введенные новым стандартом идентификаторы седьмой версии UUIDv7 — это лучшее, что теперь есть для ключей баз данных и распределенных систем. Они обеспечивают такую же производительность, как и bigint. UUIDv7 уже реализованы в том или ином виде в основных языках программирования и в некоторых СУБД.
Сгенерированные UUIDv7 имеют все преимущества UUID и при этом упорядочены по дате и времени создания. Это ускоряет поиск индексов и записей в БД по ключу в формате UUID, значительно упрощает и ускоряет базы данных и распределенные системы. Неупорядоченность значений UUID прежде сдерживала использование UUID в качестве ключей и вынуждала разработчиков выдумывать собственные форматы идентификаторов или довольствоваться последовательными целыми числами в качестве ключей.
Черновик стандарта активно обсуждался на Хабре в апреле 2022 года в комментариях к статье "Встречайте UUID нового поколения для ключей высоконагруженных систем".
Разные участники разработки нового стандарта придерживались различных взглядов, и практически все обсуждавшиеся альтернативные варианты структуры UUIDv7 вошли в стандарт. Поэтому теперь перед разработчиками возникает вопрос, какую из множества возможных спецификаций UUIDv7 реализовывать и применять. Также для массового перехода на UUIDv7 нужна дополнительная функциональность, повышающая привлекательность UUIDv7 для разработчиков и бизнеса.
Предложенная мной ниже спецификация UUIDv7 с дополнительной функциональностью описывает максимально надежный и удобный вариант структуры UUIDv7 для самых сложных и высоконагруженных информационных систем. Функциональность упорядочена по приоритету реализации
Старые языки программирования, новые успехи: растёт популярность COBOL и Fortran
С недавних пор такие ЯП, как COBOL и Fortran, снова стали набирать «вес» в рейтингах. Собственно, они никогда и не уходили из поля зрения разработчиков, просто постепенно теряли позиции.
Но сейчас ситуация изменилась. Один из них даже занял 10 место в Tiobe, поднявшись на 9 позиций. При этом один из самых популярных современных языков, а именно PHP, постепенно опускается в рейтингах. Конечно, они никогда не были оптимальным показателем востребованности ЯП. Тем не менее это и не последний фактор, отмахнуться от них тоже не получится. Подробности — под катом.
Обзор бесплатных чат-ботов в телеграме 2024
Запуск инновационных технологий, таких как Midjourney и Chat GPT, значительно повысил интерес к искусственному интеллекту, что, в свою очередь, способствовало появлению в Телеграме специализированных чат-ботов. Эти боты предоставляют возможность использовать функции популярных нейросетей без необходимости регистрации и, зачастую, бесплатно.
Предлагаю рассмотреть некоторых ботов и оценить их функционал. Приятного прочтения! (:
Чудесное совпадение или ожидаемая связь: почему π²≈g
Давайте ненадолго перенесёмся в школьные годы и вспомним уроки математики и физики. Помните, чему равно число π? Естественно помните, мы же на Хабре! А чему равно π в квадрате? Это тоже странный вопрос. Конечно, 9,87. А чему равно ускорение свободного падения g помните? Ещё бы, это число так тщательно вдолбили в нашу память, что захочешь — не забудешь: 9,81 м/c². Конечно, оно может варьироваться, но для решения базовых школьных задачек мы обычно использовали именно это значение.
А теперь, внимание, следующий вопрос: а с какого это перепугу π² примерно равно g?
Это база машинного обучения
Рассказать всё о машинном обучении на двух страницах текста — невыполнимая задача. Именно сложность и многообразие темы могут отталкивать тех, кто только начинает знакомство с ней. Однако мы хотим помочь на этом пути и дать упрощённое введение в машинное обучение, чтобы каждый смог уловить его базовые принципы и понять, где его можно применять. Мы будем рады, если после прочтения кому-нибудь станут интересны нюансы и детали. А пока начнём с обобщений.
В самом общем смысле, машинное обучение можно описать как метод автоматизации, позволяющий компьютерам анализировать данные и делать на их основе какие-то выводы. Зачастую эти выводы используются для создания прогнозов о будущих событиях.
Можно, конечно, попытаться обойтись и без машинного обучения. Самый простой подход — проанализировать данные и составить понятный набор правил формата if-else (если-то). Между прочим, это применяется в реальной жизни, например, при анализе потребительской корзины. Составляется набор ассоциативных правил вида {хлеб, чай} → {молоко}. Это означает, что если покупатель приобретает хлеб и чай, то, скорее всего, он также купит молоко. Вуаля — мы сделали прогноз на будущее.
Как новый компилятор K2 ускоряет компиляцию Kotlin на 94%
Привет, меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS.
Не за горами выпуск новой версии Kotlin 2.0, основной частью которого является изменение компилятора на K2.
По замерам JB, K2 ускоряет компиляцию на 94%. Также он позволит ускорить разработку новых языковых фич и унифицировать все платформы, предоставляя улучшенную архитектуру для мультиплатформенных проектов.
Но мало кто изучал, как работает K2, и чем он отличается от K1.
Эта статья освещает нюансы работы компилятора, которые будут полезны разработчикам для понимания, что же JB улучшают под капотом, и как это работает.
WireGuard Воскрес
Спешим к сообществу с радостной новостью - заблокированный WireGuard можно реанимировать с помощью нашего клиента AmneziaVPN!
Многие из вас слышали, что в России и некоторых других странах блокируются VPN, работающие на протоколе WireGuard. Теперь есть решение, чтобы он снова заработал!
Байт-кодовые VM в неожиданных местах
Отвечая на вопрос в Twitter, Ричард Хипп написал, почему SQLite использует байт-кодовую VM для исполнения операторов SQL.
Вероятно, большинство людей ассоциирует байт-кодовые VM с языками программирования общего назначения, например, с JavaScript или Python. Но иногда их можно встретить в неожиданных местах! В статье я расскажу о тех, которые знаю.
Ближайшие события
Лучшими кубитами для квантовых вычислений могут быть нейтральные атомы
В поисках наиболее масштабируемого оборудования для квантовых компьютеров кубиты, состоящие из отдельных атомов, переживают решающий момент.
В конце прошлого года технологический гигант IBM объявил о том, что может показаться важной вехой в квантовых вычислениях: о первом в мире чипе под названием Condor, содержащем более 1000 квантовых битов или кубитов. Прошло всего два года после того, как компания представила Eagle, первый чип с более чем 100 кубитами. Казалось, что эта область стремительно движется вперёд. Создание квантовых компьютеров, способных решать полезные задачи за рамками даже самых мощных классических суперкомпьютеров, требует ещё большего их масштабирования — возможно, до многих десятков или сотен тысяч кубитов. Но это ведь всего лишь вопрос техники, верно?
Vintik & Shpuntik Challenge
Всем привет. Впереди длинные выходные, а погода (в средней полосе России) не шепчет. Посему хочу предложить вам развлекалочку на стыке математики и программирования, а также возможность немного улучшить свое финансовое положение 😊.
История эта началась лет 10 назад, когда моя дочь София Валерьевна принесла задачку (автор ее - Дмитрий Юрьевич Кузнецов аka ДЮК) с олимпиады для 7-го класса.
«Незнайка записывает 9 разрядов 10-значного десятичного числа и пропускает один по своему выбору. Пропущенный разряд он предлагает записать Винтику, а затем показывает полученное 10‑значное число Шпунтику. Как могут Винтик и Шпунтик договориться, чтобы Шпунтик угадал, какой именно разряд записал Винтик? »
ELK для бизнес-аналитики: как мы разбираем причины интервенций на кассах самообслуживания с весовой платформой
Привет! Меня зовут Даша, я работаю в CSI — в команде, которая развивает направление самообслуживания. Пару лет назад мы разработали для нашей кассы самообслуживания новый модуль: контрольно-весовую платформу. В статье я пошагово расскажу: как мы собираем у клиентов-ритейлеров данные, необходимые для аналитики работы платформы, какие строим дашборды, и как происходит главное: работа по снижению количества интервенций — ситуаций, когда самостоятельная покупка прерывается необходимостью вмешательства кассира-помощника на «острове» самообслуживания.
Профессия «белый хакер»: как превратить хобби в работу
На связи Positive Education, и мы продолжаем цикл публикаций о профессиях в сфере кибербезопасности. Потребность в таких экспертах растет с головокружительной скоростью, и сейчас это уже не одна профессия «специалист по информационной безопасности». Внутри отрасли сформировались более узкие специальности (ранее публиковали схему профессий), и мы решили рассказать о 10 самых трендовых профессиях в сфере кибербезопасности (о первых двух можно почитать здесь и здесь). Сегодня хотим познакомить вас с белым хакером — человеком, который последние 15 лет развивает это направление в России.
Использование временных таблиц (GTT) в ABAP-разработках
GTT – global temporary tables, таблицы которые наполняются и очищаются в рамках ABAP-сессии (application session), но находятся при этом на уровне БД (то есть данные не передаются между Database и Application).
GTT могут помочь сделать код по выборке из БД более удобочитаемым, а также сократить количество передаваемых данных между DataBase и Application.
Шардирование баз данных и проектирование систем
Шардирование базы данных — это процесс её разделения на несколько машин, что способствует масштабируемости приложения. Механизм шардирования предполагает разбиение данных на два или более мелких фрагмента, называемых логическими шардами. Затем логические блоки распределяются по отдельным узлам базы данных, называемым физическими блоками, каждый из которых может содержать несколько логических блоков.
Такой подход позволяет избежать проблем с производительностью, возникающих, когда одна из машин работает в условиях перегрузки, и обеспечивает более экономичное и грамотное масштабирование. По мере увеличения объема данных и трафика все чаще возникает необходимость горизонтального масштабирования путем добавления новых машин, а не вертикального путем модернизации одного большого сервера.
Топ самых интересных CVE за апрель 2024 года
Всем привет! Это наша традиционная подборка самых интересных CVE прошлого месяца. В апреле десяточками по CVSS отметились уязвимости на внедрение команд в ПО для анализа сетевого трафика Flowmon и PAN-OS. Как обычно, всплыли несколько критических уязвимостей в плагинах для Wordpress.
Внимания заслуживают также нулевой день в межсетевых экранах от Cisco на отказ в обслуживании, уязвимости в продуктах Splunk и RCE в десктопном приложении Telegram — с маленькой опечаткой в коде в качестве напоминания, что лучше пользоваться веб-версией. За подробностями добро пожаловать под кат!
Хабы
Вклад авторов
alizar 91807.8marks 24166.6ru_vds 20016.7alexzfort 14179.0XaocCPS 10986.2pronskiy 10649.4m1rko 10382.0ptsecurity 9613.7Andrey2008 9558.2Jeditobe 9387.6