Pull to refresh
27
0
Send message

ClickHouse: полезные лайфхаки

Level of difficultyMedium
Reading time12 min
Views39K

Я начала пользоваться ClickHouse до того, как это стало мэйнстримом: первый раз я столкнулась c этой базой данных лет 8 назад. C тех пор я уверена, что это лучшая DB для аналитики. Большинство аналитиков, которых я знаю, в восторге от ClickHouse (иногда чтобы проникнуться, требуется немного времени: разобраться и привыкнуть к синтаксису).

В этой статье я расскажу что такое ClickHouse и почему я считаю его идеально подходящим мощным инструментом для аналитики. А также поделюсь tips & tricks из моего опыта. Поехали.

Поехали

Как ускорить написание кода: AI, генерация кода, плагины

Level of difficultyEasy
Reading time9 min
Views5.3K

Разработчики пишут много кода, очень много. И я задумался как сделать так, чтобы писать код быстрее. Надо научится быстрее его набирать и/или делегировать его написание другим. Хороший выход, но какое будет качество кода? Автор решил разобраться, какие есть инструменты для ускорения написания кода и что умеют AI технологии

Подробности

Как Литрес сделал из меня Flutter разработчика

Level of difficultyEasy
Reading time7 min
Views12K

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

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

С чего всё начиналось

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

Ошибка: Идея не обдумана. Загорелся и стал сразу делать.

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

Читать далее

Вопросы и ответы для собеседования по Kotlin. Часть 3

Level of difficultyMedium
Reading time21 min
Views52K
Читать далее

Полезные TreeMap визуализации для MSSQL, Postgres и MySQL

Level of difficultyMedium
Reading time3 min
Views10K

Я очень люблю визуализации. Человек лучше всего воспринимает информацию через образы. Для трех часто встречающихся баз (MSSQL, Postgres и MySQL) я смастерил плагины к проекту Bell, хотя этот код на Python можно использовать и отдельно. Поэтому для каждой визуализации я буду в скобочках писать имя файла из репозитория GitHub - вы можете этот файл вытащить и использовать его отдельно от проекта (для этого нудны минимальные модификации).

Отмечу только, что я считаю себя экспертом только в MSSQL, а то что сделал с другими базами - сделал по наитию. Кроме того, в отличие от MSSQL у меня нет реальных баз под большой нагрузкой для Postgres и MySQL. Поэтому ошибки/пожелания для скриптов Postgres и MySQL очень и очень welcome!

В основном я задействовал TreeMap.

Читать далее

Как подружить Алису с ChatGPT

Level of difficultyMedium
Reading time6 min
Views72K

О ChatGPT сейчас не говорит только ленивый. Давайте попробуем соединить голосовой помощник Алиса и ChatGPT. Таким образом мы сможем взаимодействовать с ChatGPT с помощью голоса. А он с помощью голоса может нам отвечать. Конечно тут будут ограничения о которых я подробно опишу далее. Данная статья не столько о ChatGPT а о том как писать навыки для Алисы.

Читать далее

Небезопасный android часть 1: эксперименты с sun.misc.Unsafe

Level of difficultyMedium
Reading time5 min
Views3.8K

Java очень глубоко интегрирована в android и имеет в данной ОС свою нестандартную виртуальную машину — DVM/ART, поэтому многие детали реализации отличаются от привычных. А что насчёт внутреннего API sun.misc.Unsafe? В этом цикле статей с его помощью мы попытаемся максимально сломать виртуальную машину андроида.

Читать далее

Как при помощи Rust в 150 раз ускорить код на Python

Level of difficultyEasy
Reading time6 min
Views33K

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


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


Обзор


Проблему решим в 6 шагов:


  1. Решим вопрос о том, почему функция медленная.
  2. Подготовим проект.
  3. Перепишем функцию в Rust.
  4. Скомпилируем код на Rust и разместим его в пакете Python.
  5. Импортируем пакет Python в проект.
  6. Выполним бенчмарк чистого Python и функции на Rust.

Пакет maturin скомпилирует Rust-код и преобразует его в готовый к работе пакет Python.


1. Решим вопрос о том, почему функция медленная


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

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

Самодостаточный системный подход с применением мультиплатформенного Kotlin

Reading time7 min
Views2.6K
Готов ли мультиплатформенный Kotlin для создания полностековых (веб-)сервисов? Как такая разработка воспринимается с точки зрения тех, кто уже имеет опыт работы с Kotlin? Поделюсь моим опытом по созданию веб-UI для JVM-микросервиса при помощи Kotlin Multiplatform.

image

Введение


Не буду здесь вдаваться в детали о том, с какой целью применяется микросервисный подход, а также не стану углубляться в теорию микросервисов. Начнём этот пост с допущения, что вы хотите улучшить микросервисный ландшафт, имеющийся у вас в настоящий момент, либо собираетесь мигрировать на микросервисную систему, чтобы улучшить удобство использования и/или администрирования – предоставив для этого веб-UI. Идеально, если при этом вы уже знакомы с Kotlin.
Читать дальше →

Колоночная база данных в PostgreSQL 15 и факты о территории России по данным OpenStreetMap

Level of difficultyMedium
Reading time5 min
Views8.9K

Продолжим тему из публикации «Как поместить весь мир в обычный ноутбук: PostgreSQL и OpenStreetMap».

Сегодня визуализируем 15 мест где в России больше всего зданий. В этом нам поможет мой проект openstreetmap_h3 и PostgreSQL 15. На данный момент OpenStreetMap H3 единственное решение для импорта OSM данных партиционированных по H3 геоиндексу в PostgreSQL и Citus massive parallel processing. Сохраним данные в колоночное хранилище и посмотрим на план запроса для него.

В этой публикации мы будем агрегировать данные в большой таблице где нас интересуют для этих операций лишь два столбца и сможем извлечь пользу от этой модели данных на NVMe накопителе. Раньше я работал с колоночными базами данных AWS Redshift, Dremio, QuestDB и HeavyDB, но не смотря на их производительность, до функционала/протестированности и стабильности PostgreSQL им еще пока еще ох как далеко. Вот и отлично, попробуем получить все плюсы экосистемы PostgreSQL и колоночного хранилища citus. Вперед, к заветной цели на самых свежих версиях программ нашего аналитического стека!

Читать далее

Как поместить весь мир в обычный ноутбук: PostgreSQL и OpenStreetMap

Reading time29 min
Views27K

Когда человек раньше говорил что он контролирует весь мир, то его обычно помещали в соседнюю палату с Бонапартом Наполеоном. Надеюсь, что эти времена остались в прошлом и каждый желающий может анализировать геоданные всей земли и получать ответы на свои глобальные вопросы за минуты и секунды. Я опубликовал Openstreetmap_h3 — свой проект, который позволяет производить геоаналитику над данными из OpenStreetMap в PostGIS или в движке запросов, способном работать с Apache Arrow/Parquet.

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

Первый пост не претендует на монографию, начну с краткого обзора...

Читать далее

Сводные таблицы в Pandas — швейцарский нож для аналитиков

Reading time3 min
Views49K

Сводные таблицы хорошо известны всем аналитикам по Excel. Это прекрасный инструмент, который помогает быстро получить различную информацию по массиву данных. Рассмотрим реализацию и тонкости сводных таблиц в Pandas.

Читать далее

Polars: библиотека для работы с данными, написанная на RUST

Reading time6 min
Views26K

Настоящий хреновый программист всегда находится на гребне волны новых технологий. Зачем ему это? Чтобы при случае можно было повыделоваться багажом своих знаний, и заработать немного очков уважения в окружении своих менее осведомлённых коллег. Stay toxic, brothers. Я с вами.

Когда-то давно мне нужно было обработать чуть больше тысячи жирнейших excel-таблиц и сделать это нужно было быстро. Буквально за час я вкатился в Python и Pandas, а за второй час выполнил все необходимые манипуляции. Так я и познакомился с этими двумя. С тех самых пор приходилось выполнять самые разные задачи по анализу данных и всё бы ничего, но хотелось бы, чтобы Pandas работал побыстрее. Оказывается хотелось не одному мне, а целой команде разработчиков, на Rust.

Как и полагается, всё что на Rust то Blazingly-Fast, и Polars не стала исключением. За счёт чего Polars быстрее Pandas? Что это за библиотека и стоит ли на неё переходить? Давайте попробуем разобраться в этой статье.

Читать далее

С чего айтишнику можно начать 2023 год?

Reading time5 min
Views17K

Отдохните после 2022 года! На этом можно завершить статью.

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

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

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

Читать далее

TeamViewer из подручных материалов

Reading time3 min
Views25K

Всем привет!

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

И так, у сотрудника техподдержки есть необходимость подключаться к рабочему столу пользователя, что бы совместно что-то сделать. Раз нет TeamViewer, значить надо использовать что-то похожее, например VNC.Тут же “выплывают” проблемы.

Читать далее

Как создать свою СУБД с нуля и не сойти с ума. Практическое пособие начинающему некроманту. Часть первая

Reading time43 min
Views37K

Наступил Апокалипсис.

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

Так родился учебный проект SicQL, реляционная СУБД, чей символ — сова — это олицетворение силы знаний и мудрости. Олицетворение тех знаний и той мудрости, которые мы получим, создав с нуля то, чем мы пользуемся каждый день, может, не осознавая всей сложности таких инструментов.

Приглашаю присоединиться к увлекательному путешествию!

Принять приглашение на борт

Изучаем Python за 6 месяцев. Подробный план обучения

Level of difficultyEasy
Reading time5 min
Views304K

Простой и красивый синтаксис, множество библиотек под самые разные задачи и большое комьюнити делают Python одним из самых популярных языков программирования на сегодняшний день, который активно используется в data science и машинном обучении, веб-разработке и других областях программирования.

Когда я начал изучать питон, у меня возникло несколько вопросов.

Читать далее

Лучшие open-source инструменты для Python проектов

Reading time12 min
Views41K

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

Инструменты распределены по этапам/сферам разработки. По каждому из них я дам небольшое описание и попытаюсь рассказать о его пользе. Если утилита имеет дополнительные расширения/плагины, то я расскажу про самые полезные (на мой взгляд).

Читать далее

Information

Rating
Does not participate
Works in
Registered
Activity