Forwarded from IT Job Hub | Работа и вакансии в IT
Работа на зарубежные компании кажется идеальным вариантом: высокий доход, финансовая стабильность, свободный график.
Но реально ли получить такую работу, если ты живешь в другой стране и какие подводные камни мы разобрали в первой части статьи.
Что вы узнаете:
Если давно задумывались о переходе на валютную удаленку, но не знали, с чего начать — этот гайд для вас
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
⚡ Команды дня: cброс коммитов
Предположим, вы сделали коммит в своём проекте. Однако после проверки вы понимаете, что вам нужно скорректировать или полностью отменить последний коммит. Для таких случаев Git предоставляет следующие команды:
🔹 Soft reset
Эта команда позволяет вернуться к последнему коммиту, сохранив все изменения в области подготовки. Проще говоря, с помощью этой команды можно легко отменить коммит, сохранив изменения в коде. Это удобно, когда вам нужно пересмотреть последний коммит, возможно, добавить больше изменений перед повторным коммитом.
🔹 Mixed reset
Это поведение по умолчанию, когда вы используете
🔹 Hard reset
Напоследок давайте поговорим о команде
Библиотека мобильного разработчика #буст
Предположим, вы сделали коммит в своём проекте. Однако после проверки вы понимаете, что вам нужно скорректировать или полностью отменить последний коммит. Для таких случаев Git предоставляет следующие команды:
🔹 Soft reset
git reset --soft HEAD^
Эта команда позволяет вернуться к последнему коммиту, сохранив все изменения в области подготовки. Проще говоря, с помощью этой команды можно легко отменить коммит, сохранив изменения в коде. Это удобно, когда вам нужно пересмотреть последний коммит, возможно, добавить больше изменений перед повторным коммитом.
🔹 Mixed reset
git reset --mixed HEAD^
Это поведение по умолчанию, когда вы используете
git reset HEAD^
без указания --soft
или --hard
. Он сбрасывает последний коммит и удаляет изменения из области подготовки. Однако эти изменения остаются в рабочей директории. Это полезно, когда вы хотите отменить последий коммит и внести изменения с нуля, сохранив изменения в рабочей директории перед повторным коммитом.🔹 Hard reset
git reset --hard HEAD^
Напоследок давайте поговорим о команде
git reset --hard HEAD^
. Она полностью стирает последний коммит вместе со всеми связанными с ним изменениями из вашей истории Git. Когда вы используете флаг --hard
, пути назад уже не будет. Поэтому используйте его с особой осторожностью, только если хотите навсегда удалить последний коммит и все его изменения.Библиотека мобильного разработчика #буст
❤1
Forwarded from Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
Приватность, скорость, расширенные функции — что выбрать? Разбираем популярные форки браузеров и их преимущества.
Что в статье:
Браузер — это не просто окно в интернет, а инструмент, который должен соответствовать вашим требованиям. Делитесь своим опытом в комментариях!
Прочитать подробнее статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
🤔 Деньги или любимое дело?
Вопрос о выборе между работой, которая не приносит удовольствия, но обеспечивает высокий доход, и любимым делом с низкой зарплатой волнует многих. Каждый из нас сталкивается с этой дилеммой, и порой решение оказывается непростым.
Что важнее для вас: финансовая стабильность или удовлетворение от работы. Какой путь выберете вы? Голосуйте и пишите своё мнение в комментариях 💬
❤️ — работать не нелюбимой работе и много зарабатывать
🤝 — на любимой работе за маленькую зп
Библиотека мобильного разработчика #междусобойчик
Вопрос о выборе между работой, которая не приносит удовольствия, но обеспечивает высокий доход, и любимым делом с низкой зарплатой волнует многих. Каждый из нас сталкивается с этой дилеммой, и порой решение оказывается непростым.
Что важнее для вас: финансовая стабильность или удовлетворение от работы. Какой путь выберете вы? Голосуйте и пишите своё мнение в комментариях 💬
❤️ — работать не нелюбимой работе и много зарабатывать
🤝 — на любимой работе за маленькую зп
Библиотека мобильного разработчика #междусобойчик
❤15🤝14
📱 Приготовили для вас дайджест по актуальному из мира iOS, Android и кроссплатформы.
🔹 Настраиваем работу с iOS-проектами в Zed
🔹 Расследуем дело асинхронного программирования с Леонидом Каневским
🔹 Хакнуть Qt: как мы запускали Picture-in-Picture в навигаторе 2ГИС
🔹 Как мы ускоряли Android-сборку «селлера»
🔹 Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS
Библиотека мобильного разработчика #свежак
🔹 Настраиваем работу с iOS-проектами в Zed
🔹 Расследуем дело асинхронного программирования с Леонидом Каневским
🔹 Хакнуть Qt: как мы запускали Picture-in-Picture в навигаторе 2ГИС
🔹 Как мы ускоряли Android-сборку «селлера»
🔹 Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS
Библиотека мобильного разработчика #свежак
🔥2
📝 Шпаргалка: автозамыкание (autoclosure) в Swift
Автозамыкание оборачивает аргумент функции в замыкание.
Когда вызывается autoclosure, оно возвращает значение выражения, завернутого внутрь.
Автозамыкание — это не что иное, как синтаксическое удобство для написания более чистого кода.
Иногда синтаксически удобно использовать
Это происходит потому, что
Это может сделать код более читабельным.
Однако помните, что Apple говорит об использовании автозамыканий :
Вот пример того, как
Как видите, вызов функции
Библиотека мобильного разработчика #буст
Автозамыкание оборачивает аргумент функции в замыкание.
Когда вызывается autoclosure, оно возвращает значение выражения, завернутого внутрь.
Автозамыкание — это не что иное, как синтаксическое удобство для написания более чистого кода.
Иногда синтаксически удобно использовать
autoclosure
при работе с функцией, которая принимает аргумент замыкания.Это происходит потому, что
autoclosure
позволяет не использовать фигурные скобки {}
.Это может сделать код более читабельным.
Однако помните, что Apple говорит об использовании автозамыканий :
Обычно принято вызывать функции, которые принимают autoclosure, но не принято реализовывать такого рода функции.
Вот пример того, как
autoclosure
упрощает код. В первом фрагменте используется обычное замыкание, а во втором — autoclosure
. Посмотрите, как вызов функции I_will
стал более читабельным во втором фрагменте:
func I_will(_ perform_action: () -> Void) {
perform_action()
}
I_will({
print(«Hello, world!»)
})
func I_will(_ perform_action: @autoclosure () -> Void) {
perform_action()
}
I_will(print(«Hello, world»))
Как видите, вызов функции
I_will
больше не требует использования фигурных скобок.Библиотека мобильного разработчика #буст
❤3😁1
🚰 Топ-7 утечек памяти Android
Утечки памяти — тихие убийцы производительности приложений. Даже в 2025 году, когда Jetpack Compose доминирует в разработке пользовательских интерфейсов и появляются новые модные инструменты, эти ошибки все еще преследуют разработчиков.
Автор статьи разберет 7 наиболее распространенных виновников и вооружит вас проверенными в бою решениями.
👉 Читать статью
Библиотека мобильного разработчика #свежак
Утечки памяти — тихие убийцы производительности приложений. Даже в 2025 году, когда Jetpack Compose доминирует в разработке пользовательских интерфейсов и появляются новые модные инструменты, эти ошибки все еще преследуют разработчиков.
Автор статьи разберет 7 наиболее распространенных виновников и вооружит вас проверенными в бою решениями.
👉 Читать статью
Библиотека мобильного разработчика #свежак
👍5🥱2❤1
🗓️ Апрель будет насыщен конференциями и профильными тусовками разного масштаба.
🔹 Gamedev CityFest
• Когда: 5 апреля
• Где: Новосибирск
• Формат: офлайн
• Участие: платное
Конференция будет интересна разработчикам игр: как профессионалам направления, так и новичкам, издателям, гейм-дизайнерам, художникам, продюсерам, рекрутерам и другим специалистам индустрии. Участников ждёт три потока докладов, воркшоп и дискуссионная панель на актуальные темы.
🔹 HolyJS 2025 Spring
• Когда: 7-8 апреля
• Где: Москва
• Формат: онлайн и офлайн
• Участие: платное
Спикеры на конференции разберут JS-разработку с разных ракурсов: веб-технологии, Node.js, графика и анимации, web3, блокчейн. Будут разобраны реальные кейсы и подняты вопросы безопасности. Участники обменяются опытом, обсудят обновление языка JavaScript, поговорят о фреймворках и инструментах, а также поучаствуют в дискуссиях со спикерами.
👉 Читать полностью
Библиотека мобильного разработчика #свежак
🔹 Gamedev CityFest
• Когда: 5 апреля
• Где: Новосибирск
• Формат: офлайн
• Участие: платное
Конференция будет интересна разработчикам игр: как профессионалам направления, так и новичкам, издателям, гейм-дизайнерам, художникам, продюсерам, рекрутерам и другим специалистам индустрии. Участников ждёт три потока докладов, воркшоп и дискуссионная панель на актуальные темы.
🔹 HolyJS 2025 Spring
• Когда: 7-8 апреля
• Где: Москва
• Формат: онлайн и офлайн
• Участие: платное
Спикеры на конференции разберут JS-разработку с разных ракурсов: веб-технологии, Node.js, графика и анимации, web3, блокчейн. Будут разобраны реальные кейсы и подняты вопросы безопасности. Участники обменяются опытом, обсудят обновление языка JavaScript, поговорят о фреймворках и инструментах, а также поучаствуют в дискуссиях со спикерами.
👉 Читать полностью
Библиотека мобильного разработчика #свежак
❤2
🎭 Dev Memes: 1 апреля, а баги всё те же
Сегодня день официально разрешённого троллинга — и мы не могли пройти мимо. Собрали подборку мемов для мобильного разработчика, которые вызывают лёгкое желание уволиться.
👉 Всё это — из нашего мемного канала «Библиотека IT-мемов»
Библиотека мобильного разработчика
Сегодня день официально разрешённого троллинга — и мы не могли пройти мимо. Собрали подборку мемов для мобильного разработчика, которые вызывают лёгкое желание уволиться.
👉 Всё это — из нашего мемного канала «Библиотека IT-мемов»
Библиотека мобильного разработчика
😁7
🎰 Инструмент недели: SDK для скретч-карт
Scratchify — это легкий и настраиваемый SDK для скретч-карт, созданный с использованием Jetpack Compose Multiplatform (поддерживает Android и iOS). Он позволяет создавать интерактивные скретч-поверхности, на которых пользователи могут соскрести верхний слой, чтобы открыть скрытый под ней контент. Идеально подходит для поощрений, скидок, сюрпризов и элементов геймификации в вашем приложении.
⚙️ Scratchify на GitHub
Библиотека мобильного разработчика #буст
Scratchify — это легкий и настраиваемый SDK для скретч-карт, созданный с использованием Jetpack Compose Multiplatform (поддерживает Android и iOS). Он позволяет создавать интерактивные скретч-поверхности, на которых пользователи могут соскрести верхний слой, чтобы открыть скрытый под ней контент. Идеально подходит для поощрений, скидок, сюрпризов и элементов геймификации в вашем приложении.
⚙️ Scratchify на GitHub
Библиотека мобильного разработчика #буст
❤3
Forwarded from Proglib.academy | IT-курсы
🧐 Разбираемся: FAANG — не мечта, а капкан
Раньше работа в Google или Meta казалась вершиной айтишной карьеры. Сейчас — всё чаще звучат слова «стресс», «сокращения», «выгорание».
➡️ В статье разбираем
— Почему бывшие сотрудники бегут из FAANG
— Как изменилась культура внутри Big Tech
— Где теперь искать стабильность и уважение
— Реальные комментарии от действующих инженеров
— И что на самом деле стоит за блестящей обёрткой FAANG
Если вы всё ещё решаете LeetCode ради «заветной должности» — обязательно прочитайте нашу статью.
📎 Ссылка
🔵 Включайся в обучение и устраивайся куда хочешь, тебя ждет продвинутый этап нашего курса «Алгоритмы и структуры данных»
Раньше работа в Google или Meta казалась вершиной айтишной карьеры. Сейчас — всё чаще звучат слова «стресс», «сокращения», «выгорание».
— Почему бывшие сотрудники бегут из FAANG
— Как изменилась культура внутри Big Tech
— Где теперь искать стабильность и уважение
— Реальные комментарии от действующих инженеров
— И что на самом деле стоит за блестящей обёрткой FAANG
Если вы всё ещё решаете LeetCode ради «заветной должности» — обязательно прочитайте нашу статью.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🤔1
📝 Промпт для идеального код ревью
Чтобы облегчить код ревью, используйте этот промпт для ChatGPT:
⚡ Как вы обычно проводите код ревью? Делитесь в комментариях!
Библиотека мобильного разработчика #буст
Чтобы облегчить код ревью, используйте этот промпт для ChatGPT:
1. Проанализируй приведенный [язык] код на предмет признаков проблемного кода и предложи улучшения: [фрагмент кода].
2. Проверь [язык] код на предмет правильности логирования и мониторинга: [фрагмент кода].
3. Проанализируй [язык] код на предмет потенциальных проблем масштабируемости: [фрагмент кода].
4. Оцени тестовое покрытие этого [язык] кода: [фрагмент кода].
5. Оцени [язык] код на совместимость с [платформой или технологией]: [фрагмент кода].
⚡ Как вы обычно проводите код ревью? Делитесь в комментариях!
Библиотека мобильного разработчика #буст
🤩2
💻 How to: реализовать кастомный делегат
Чтобы написать кастомный делегат, нужно определить класс, который реализует интерфейс
Классы, реализующие
•
•
Например, рассмотрим создание кастомного делегата для логирования изменения значения свойства:
Здесь мы определяем класс
Затем мы можем использовать наш кастомный делегат следующим образом:
Здесь мы создаем экземпляр класса
👉 Подробнее в статье
Библиотека мобильного разработчика #буст
Чтобы написать кастомный делегат, нужно определить класс, который реализует интерфейс
ReadOnlyProperty
для делегата val
или ReadWriteProperty
для делегата var.Классы, реализующие
ReadOnlyProperty
и ReadWriteProperty
, содержат два метода:•
getValue(thisRef: T, property: KProperty<*>): R,
который должен возвращать значение свойства.•
setValue(thisRef: T, property: KProperty<*>, value: R)
, который должен устанавливать значение свойства.Например, рассмотрим создание кастомного делегата для логирования изменения значения свойства:
class LoggingDelegate(private var value: T) : ReadWriteProperty {override fun getValue(thisRef: Any?, property: KProperty): T {println(«Getting value of ${property.name}: $value»)return value}override fun setValue(thisRef: Any?, property: KProperty, value: T) {println(«Setting value of ${property.name} to $value»)this.value = value}}
Здесь мы определяем класс
LoggingDelegate
, который реализует интерфейс ReadWriteProperty
. Метод getValue
выводит в консоль текущее значение свойства и возвращает его, а метод setValue
выводит новое значение свойства в консоль и сохраняет его в переменной value
.Затем мы можем использовать наш кастомный делегат следующим образом:
class MyClass {var myProperty: Int by LoggingDelegate(0)}fun main() {val obj = MyClass()obj.myProperty = 42 // Setting value of myProperty to 42println(obj.myProperty) // Getting value of myProperty: 42}
Здесь мы создаем экземпляр класса
MyClass
, который содержит свойство myProperty
, использующее наш кастомный делегат LoggingDelegate
. При установке значения свойства или получении его значения будут вызываться соответствующие методы нашего делегата, и мы увидим соответствующие сообщения в консоли.👉 Подробнее в статье
Библиотека мобильного разработчика #буст
🤩2👍1