TGViewer
Channel Public Channel
A bit deeper

A bit deeper

@abitdeeper

Админ: @ilyagulya
Английская версия: @abitdeeper_en
Subscribers
199
Photos
27
Videos
2
Links
33

Showing posts older than #48 · Back to latest

Older Posts 11 shown
Post #47 1.75K
Публичные выступления

Недавно выступал на митапе Bereke Bank с докладом о том как я коммитил в Kotlin.
Это мой первый опыт публичного выступления, поэтому конечно же были все сопутствующие проблемы:
- Потные ладошки и достаточно нервное состояние последние недели перед докладом
- Сбивался в самых неожиданных местах

По пути примерно понял план по которому мне комфортно готовить выступление:
1. Записываю тезисы того о чём я делаю доклад. В этот раз я сначала начал писать прям полноценно речь, вышло очень много текста которым я по факту практически не воспользовался. Так что тезисов достаточно.
2. Сразу же начинаю делать презентацию. Делаю упор на то чтобы презентация была достаточно подробная и чтобы она вела мой разговор. У меня нет шпаргалок или Speaker Notes в презентации. Я использую тот же материал который видят слушатели для того чтобы продолжать разговор.
3. Делаю 5-6 прогонов рассказа доклада по презентации. В процессе примерно понимаю как идёт рассказ, какие слайды не на своём месте, каких слайдов не хватает, какие лишние и так далее.

Я изначально не хотел заучивать речь, потому что ни разу в своей жизни не видел ситуации в которой это звучит хорошо и натурально. И, судя по всему, это было очень правильным решением, потому что в процессе репетиций я всё же выработал какое-то понимание как выкручиваться из каких-то ситуаций к которым я не готовился. 😄

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

Уже подался со следующим докладом на несколько конференций, спешно готовлю его к началу августа, чтоб попасть в программу конференции. 😄

Видео можно посмотреть тут: https://youtu.be/BmA0etcopeQ?t=2099
YouTube Android meetup Almaty Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
  • 🔥 22
  • ❤ 1
Post #46 1.09K
Post #45 1.17K
Всем привет!
Давно ничего не писал, куча дел.
Наткнулся на прекрасный новый канал на ютубе где разработчик из Испании пишет видосы про разного рода low-level разработку.
Очень рекомендую ознакомиться, достаточно простой и при этом увлекательный видос о том как он писал свою собственную базу данных с нуля для того чтобы разобраться как оно работает под капотом.
Разбирает из каких частей состоит БД с архитектурной точки зрения, как данные хранятся на диске, как происходят запросы в базу данных, какие алгоритмы и структуры данных применяются.
https://youtu.be/5Pc18ge9ohI
YouTube Writing My Own Database From Scratch First episode of the #mkown series. In this video I write my own SQL database from scratch without using any libraries or third party dependencies. Only the standard library provided by the chosen programming language is allowed (Rust in this case). The…
  • 🔥 11
  • 👍 7
  • ❤ 6
Post #44 1.41K
Post #34 1.37K
Привет, друзья! 👋

Как вы возможно помните, почти 4 месяца назад мне пришла в голову идея создать IT-сообщество в Алматы.
Думал, буду делиться с вами новостями по ходу дела, но что-то не сложилось 😅
Так что сейчас просто расскажу, как всё идёт на текущий момент.

Я пообщался с Алексеем Гладковым (@mobiledevnews), и договорился что открою локальное сообщество Mobile Broadcast в Алматы. Утрясли все вопросы и я приступил к делу.

Для начала я познакомился с программным директором местной площадки, в которой можно бесплатно проводить мероприятия (бывшая Точка Кипения в Алматы - Qaynar Bulaq). Это был очень интересный опыт, дама невероятно заряженная, всё пыталась зазвать меня в кучу других активностей помимо сообщества. 😃
Мы с ней договорились добавить в расписание регулярные встречи моего сообщества по субботам.

Следующим шагом было создание Алматинского чатика, и тут понеслось! 🚀
Как только объявили о создании, сразу пришло 60 человек. Я прорекламировал чатик в местных IT-сообществах, и сейчас у нас уже 113 участников, здорово же!

Закономерно, пока что основную часть сообщества составляют Android разработчики. 😁
Сначала думал, буду проводить каждую неделю, но оказалось не так просто. 😅
Сейчас встречаемся раз в 2 недели, в самый раз.
В прошлую субботу была уже десятая, юбилейная!

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

Главное - это сильно помогло в эмиграции. Теперь я понимаю что самый лучший вариант как не остаться замкнутым в своём пузыре - взять всё в свои руки и начать искать людей с которыми будешь проводить досуг. Организовывать всё самому, потому что за тебя это никто не сделает.

Далее были мысли сделать какое-то подобие митапа, как только соберусь с силами - займусь этим.
Как говорится, Stay tuned!
  • ❤ 22
  • 🔥 5
  • 👍 4
  • 👏 1
Post #33 1.81K
Немного про платформу Intellij

Сегодня у меня на работе была небольшая задача - нужно было исправить названия строковых ресурсов в нашем проекте - избавиться от точек.
Было: profile.expand
Стало: profile_expand
Зачем это было нужно: стандартная инспекция Find Usages в Android Studio не умеет понимать что использование R.string.profile_expand в коде это на самом деле использование ресурса profile.expand. Она работает только с названиями ресурсов у которых есть только андерскоры: profile_expand.
Соответственно, задача стояла в том чтобы перелопатить полторы тысячи ресурсов, делать это руками конечно же никакого желания и времени нету.
Также нужно не забывать что нужно не только переименовать ресурсы, но и их использование в xml по всему проекту.
На ум пришла давняя идея - сделать плагин для Intellij который позволит компилировать произвольный код для выполнения каких-то единичных операций прямо в IDE.
И тут я с удивлением обнаружил что такой инструмент давно существует в IDE!
Называется он IDE Scripting Console и получить к нему доступ можно через Cmd + Shift + A и поиск по строке IDE Scripting Console. Можете увидеть пример на скриншоте в первом комментарии к этому посту.

Внутри этого скрипта можно пользоваться всеми апи платформы Intellij которые обычно доступны при разработке плагинов для IDE. Также из скрипта можно получить значение последнего выполненного выражения, его будет видно в логе запуска скрипта.

Таким образом, задача упростилась донельзя:
1. Берём текущий открытый проект:
val project = ProjectManager.getInstance().openProjects.first()

2. Ищем все XML файлы в проекте (по пути отфильтровываем сгенерированные):
val baseDir = VfsUtil.findFile(Paths.get(project.basePath), true)!!  
val psiManager = PsiManager.getInstance(project)
val xmlFiles =
VfsUtil
.collectChildrenRecursively(baseDir)
.asSequence()
.filter { it.extension == "xml" }
.filterNot { it.path.contains("build") }
.mapNotNull { psiManager.findFile(it) as? XmlFile }

3. Переименовываем строковые ресурсы:
xmlFiles  
.filter { it.virtualFile.path.contains("/res/values/") }
.mapNotNull { xmlFile -> xmlFile.rootTag?.findSubTags("string")?.asSequence() }
.flatten()
.mapNotNull { stringTag -> stringTag.getAttribute("name") }
.filter { nameAttribute -> nameAttribute.value?.contains('.') == true }
.forEach {
val oldName = it.value!!
val newName = oldName.replace('.', '_')
WriteCommandAction.runWriteCommandAction(project) {
it.setValue(newName)
}
}

4. Ищем все XML атрибуты в проекте в которых есть значение начинающееся с @string и в котором присутствуют точки:
fun XmlFile.getAllAttributesRecursively() =  
generateSequence(
seed = listOf(element = rootTag!!),
nextFunction = {
val subTags = it.flatMap { it.subTags.toList() }
subTags.ifEmpty { null }
},
)
.flatMap { it.asSequence() }
.flatMap { it.attributes.asSequence() }


val allXmlAttributes = xmlFiles.flatMap { xmlFile ->
xmlFile
.getAllAttributesRecursively()
.filter { it.value!!.startsWith("@string/") }
.filter { it.value!!.contains('.') }
}

5. Заменяем точки в этих атрибутах на underscore:
allXmlAttributes.forEach {  
WriteCommandAction.runWriteCommandAction(project) {
it.setValue(
it.value!!.replace('.', '_')
)
}
}

Вот таким нехитрым способом я смог безопасно выполнить нетривиальный рефакторинг в проекте.
Пользуйтесь!
  • 🔥 20
  • 👍 5
  • 👏 3
Post #31 743
Недавно приехал мой микрофон из Питера, но оказалось что где-то потерялось крепление к штативу.
Я потратил две недели в попытках найти замену, и сегодня попытки увенчались успехом.
Так что в скором времени буду стримить как я разрабатываю свою игру на Flutter в прямом эфире 🙂
  • 🔥 12
Post #30 713
UPD: рано радовался, половина файлов пустые 🙂
Видимо это знак - буду разрабатывать игру с нуля на стримах :D
  • 😢 9
  • 👍 2
Post #29 686
Слава JetBrains и фиче Local history!
Я случайно удалил папку с проектом который сегодня писал весь день.
Попытался восстановить через всякие тулзы для восстановления файлов - безуспешно.
В итоге попытал удачу:
1. Создал пустую папку проекта заново.
2. Открыл её в IDEA и открыл Local History.
3. Успешно нашёл изменение в котором удаляется весь проект и ревертнул его 🥳
  • 👍 10
Post #28 684
Классную статью тут нашёл https://unkey.dev/blog/uuid-ux
Про то как сделать более приятные для разработки уникальные идентификаторы без потери энтропии
Unkey The UX of UUIDs | Unkey Unique identifiers play a crucial role in all applications, from user authentication to resource management. While using a standard UUID will satisfy all your security concerns, there’s a lot we can improve for our users.
  • 👍 2
  • 🔥 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →