Pull to refresh
18
0
Валерий @rookie_cruekie

Программист

Send message

Начни с себя, или 60 дней Kubuntu

Reading time5 min
Views73K


В продолжении предыдущей статьи «Как Prius, но только на Linux» мне хотелось бы рассказать о собственном опыте смены рабочей среды. Перед тем как переводить офисные рабочие станции, всегда лучше ставить эксперименты на себе. И я решил поставить себе Linux на пару месяцев. В качестве операционной системы для экспериментов был выбран свежий дистрибутив Kubuntu 18.04, а о подводных камнях, с которыми я столкнулся и о хрониках эксперимента расскажу под катом.


Этот материал будет полезен тем, кому любопытно попробовать Linux в повседневности, но лень наступать сразу на все грабли.

Читать дальше →
Total votes 54: ↑48 and ↓6+42
Comments228

Kotlin DSL: Теория и Практика

Reading time21 min
Views15K
Разработка тестов приложения — не самое приятное занятие. Этот процесс занимает долгое время, требует большой концентрации и при этом крайне востребован. Язык Kotlin дает набор инструментов, который позволяет довольно легко построить собственный проблемно-ориентированный язык (DSL). Есть опыт, когда Kotlin DSL заменил билдеры и статические методы для тестирования модуля планирования ресурсов, что превратило добавление новых тестов и поддержку старых из рутины в увлекательный процесс.

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

Статья будет полезна практикующим инженерам, тем, кто рассматривает Kotlin как язык для комфортного написания компактных тестов, и тем, кто хочет улучшить процесс тестирования в своем проекте.



Статья основана на докладе Ивана Осипова (i_osipov) на конференции JPoint. Дальнейшее повествование ведется от его лица. Иван работает программистом в компании Haulmont. Основной продукт компании – CUBA, платформа для разработки энтерпрайза и различных веб-приложений. В том числе на этой платформе делаются и аутсорсинговые проекты, среди которых недавно был проект в области образования, в котором Иван занимался построением расписания для образовательного учреждения. Так сложилось, что последние три года Иван так или иначе работает с планировщиками, и конкретно в Haulmont в течение года они этот самый планировщик тестируют.
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments10

Hibernate — о чем молчат туториалы

Reading time12 min
Views123K
Эта статья не будет затрагивать основы hibernate (как определить entity или написать criteria query). Тут я постараюсь рассказать о более интересных моментах, действительно полезных в работе. Информацию о которых я не встречал в одной месте.
image
Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments7

Как перестать бояться Proguard и начать жить

Reading time12 min
Views59K


Здравствуйте, я Android разработчик и я больше не боюсь ProGuard...


Обычно, об этой утилите вспоминают, когда сталкиваются с dalvik dex-limit issue или с требованием улучшить безопасность приложения. К сожалению, правильно настроить Proguard удается далеко не с первого раза. Я часто наблюдал, как многие, сломав проект, выключают Proguard и включают поддержку Mulditex и каждый раз немножечко грустил по этому поводу, ведь Proguard помогает как сократить размер приложения, так и повысить его производительность.


В итоге, я решил написать статью, в которую смогу поместить всю полезную информацию, которую я узнал за несколько лет работы с Proguard и которая могла бы помочь как совсем новичкам, так и тем, кто уже что-то знает.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments12

Типобезопасный SQL на Kotlin

Reading time4 min
Views20K

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


С помощью базовых конструкций языка и небольшого количества сахара мы попытаемся воссоздать SQL в синтаксисе Kotlin настолько близко, насколько это возможно.


vs


Ссылка на GitHub для нетерпеливых


Нашей целью будет помочь программисту отловить определенное подмножество ошибок на этапе компиляции. Kotlin, являясь строготипизованным языком, поможет нам уйти от невалидных выражений в структуре SQL запроса. Как бонус, мы получим еще защиту от опечаток и помощь от IDE в написании запросов. Исправить недостатки SQL полностью не получится, но устранить некоторые проблемные места вполне возможно.


Данная статья расскажет про библиотеку на Kotlin, которая позволяет писать SQL запросы в синтаксисе Kotlin. Также, мы немного посмотрим на внутренности библиотеки, чтобы понять как это работает.

Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments56

Д-пантенол: препарат для добра

Reading time4 min
Views29K

Знакомьтесь — декспантенол. Декспантенол получает уже пятое дыхание в медицине. Для нас важно, что он значительно стимулирует процессы регенерации в повреждённых слизистых оболочках и коже, плюс делает ещё много чего полезного. Такой эффект получается из-за универсальности тех биохимических процессов, на которые он влияет.

Сейчас расскажу, почему его так любят косметологи.
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments54

Моя история создания мотивационного приложения (iOS и Android) для дочери с дочерью на Unity и C#

Reading time13 min
Views28K

История создания приложения, позволяющего детям зарабатывать деньги своим умом


Это первая часть истории (вперемешку с рассказом о моих ошибках и их решениях) о том, как я (где-то два года в свободное время) разрабатывал мобильное приложение под iOS и Android, которое бы мотивировало мою дочь решать примеры по математике, чтобы она достигла автоматизма в основах арифметики (склад числа 10 или табличка умножения). В итоге, получилось приложение, позволяющее ребёнку зарабатывать деньги своим умом.


Использовал я движок Unity и язык C#, а также дополнительный набор софта вроде обязательного Photohsop или Audacity (для создания звуков).


План рассказа (часть первая)


  • Предыстория
  • О монетизации
  • Почему Unity
  • О Scriptable Objects
  • О плагине Anima2D
  • О Lean Localization
  • Об iTween
  • О Unity Analitics
  • О Visual Studio
  • Ссылки

Предыстория и колорадские жуки


Мой предыдущий опыт — это несколько лет в 3D и, с недавних пор, разработка нескольких инди-игр на пару с программистом, где я выступал в основном только в роли дизайнера и художника (очень редко пописывая какие-то элементарные скрипты на C#). Хотя, с программированием знаком не понаслышке (колупал Basic в школе и баловался с C/C++ в универе).


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

Total votes 34: ↑31 and ↓3+28
Comments17

25 занимательных Android библиотек. Весна 2018

Reading time5 min
Views20K
Это список из 25 новейших Android-библиотек, проектов и инструментов, выпущенных за последние 3 месяца. Здесь нет первого и последнего места, это просто список интересных библиотек. Они определённо заслуживают вашего внимания. Наслаждайтесь!


Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments2

Очень простое объяснение принципов SOLID

Reading time5 min
Views68K
Disclaimer: Всем можно, ну а я чем хуже?!

SOLID — это набор принципов по организации кода. Фактически они декларируют некие правила, которые помогут вам сохранить свои и чужие нервы и время. А могут и не помочь.

Попробуем разобраться в этих принципах на пальцах, без примеров кода и СМС.
Читать дальше →
Total votes 60: ↑53 and ↓7+46
Comments60

Model-View-Intent и индикатор загрузки/обновления

Reading time9 min
Views6.1K

Добрый день! Многие Android-приложения загружают данные с сервера и в это время показывают индикатор загрузки, а после этого позволяют обновить данные. В приложении может быть с десяток экранов, практически на каждом из них нужно:


  • при переходе на экран показывать индикатор загрузки (ProgressBar) в то время, как данные грузятся с сервера;
  • в случае ошибки загрузки показать сообщение об ошибке и кнопку "Повторить загрузку";
  • в случае успешной загрузки дать пользователю возможность обновлять данные (SwipeRefreshLayout);
  • если при обновлении данных произошла ошибка, показать соответствующее сообщение (Snackbar).

При разработке приложений я использую архитектуру MVI (Model-View-Intent) в реализации Mosby, подробнее о которой можно почитать на Хабре или найти оригинальную статью о MVI на сайте разработчика mosby. В этой статье я собираюсь рассказать о создании базовых классов, которые позволили бы отделить описанную выше логику загрузки/обновления от остальных действий с данными.

Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments0

Как предпринимателю сдать отчётность по УСН

Reading time3 min
Views5.6K


До конца срока сдачи отчётности по УСН осталась ровно одна неделя. В этой статье мы расскажем, как ИП сдать отчётность по УСН, что в неё входит, а также как сформировать декларацию по УСН бесплатно на нашем сайте.

Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments28

Ubuntu 18.04 LTS: что нового?

Reading time3 min
Views133K
image

Вчера, 26 апреля 2018 года, состоялся релиз очередной версии Ubuntu — 18.04 Bionic Beaver. Её кодовое название можно перевести на русский как “очень сильный бобёр” (да, у слова bionic есть и такое значение). Основатель Canonical Марк Шаттлворт объясняет выбор названия так:
Мы таким образом приветствуем созидателей — тех, кто создаёт приложения и пакеты, кто создаёт Ubuntu, кто создаёт что-то на базе Ubuntu. Отдавая должное их неустанному труду, мы выбрали в качестве маскота зверя, известного своим энергичным настроем, трудолюбивой натурой и инженерной смекалкой.

Ubuntu 18.04 относится к LTS (Long Term Support)-версиям. Они выходят каждые два года (предыдущей LTS-версией была 16.04) и поддерживаются в течение пяти лет с момента релиза.

Сегодня, в день официального релиза, самое время поговорить о реализованных в новой версии Ubuntu нововведениях. А наши пользователи уже сегодня могут попробовать всё на практике: образ Ubuntu 18.04 уже доступен для использования во всех наших сервисах: в Виртуальном приватном облаке, VDS Selectel и в выделенных серверах.
Читать дальше →
Total votes 75: ↑69 and ↓6+63
Comments171

Модули Java 9 и внедрение зависимостей: используем Guice

Reading time7 min
Views11K
Коллеги, привет!

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

Складывается впечатление, что модульная организация Java 9 потребует от программиста недюжинной изобретательности, и один из перспективных вариантов адаптации к такому дивному новому миру — это внедрение зависимостей. Именно по этому поводу внятно и интересно высказался в блоге O'Reilly уважаемый Пол Бэккер (Paul Bakker), один из авторов книги "Java 9 Modularity"


Приятного чтения и не забудьте проголосовать пожалуйста!
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments3

Безопасный SOCKS5 прокси для Telegram за 1 Евро и 10 минут

Reading time3 min
Views133K
Не все прокси одинаково полезны. На волне новостей о блокировке мессенджера Телеграмм стало актуально поднимать свой SOCKS5 прокси, так как чужой использовать не безопасно — неизвестно, кому принадлежат серверы, какое ПО на них используется, и какие в нем присутствуют уязвимости. Кроме того, публичные прокси часто очень медленные, поскольку большое число клиентов одновременно «пытаются» его использовать, перегружая ресурсы сервера. Под катом инструкция по быстрой настройке приватного SOCKS5 прокси с аутентификацией за 1 евро и 10 минут времени и возможностью в дальнейшем расширить защиту сервера при помощи усиленной аутентификации.
Читать дальше →
Total votes 71: ↑45 and ↓26+19
Comments142

О применении рефлексии в тестировании и не только

Reading time2 min
Views5.5K
У многих рефлексия ассоциируется с раздутым кодом или с не правильным продуманным api.
Под катом несколько полезных примеров, которые покажут положительные стороны рефлексии.

Читать дальше →
Total votes 15: ↑10 and ↓5+5
Comments18

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

Reading time6 min
Views89K
image

Добрый день, Хабрасообщество!


Случилось так, что мне потребовалось подобрать утерянный пароль к архиву 7zip, который содержал резервную копию нескольких файлов со старого диска. Пароль я давно потерял, а процесс его восстановления потребовал определенных усилий и оказался довольно занятным делом. Подробнее об этом и расскажу в статье.
Читать дальше →
Total votes 29: ↑23 and ↓6+17
Comments38

Настраиваем Syncthing. Синяя изолента в мелком бизнесе и дома

Reading time4 min
Views119K
image

image
У меня тут внезапно завалялся гайд по настройке syncthing. Я уверен, что многим это может пригодиться.

Про революцию в дистрибуции файлов, которую совершил torrent-протокол рассказывать излишне. Одна проблема была у классических версии технологии — статичность. Если данные в каталоге изменялись, приходилось заново создавать и передавать всем новый torrent-файл. И вдруг, внезапно появляется BitTorrentSync. Наступает всеобщее счастье, теперь можно синхронизировать целые массивы изменяющихся данных. Однако, спустя время проприетарность софта выливается в сильное урезание функциональности, привязку к своим серверам и довольно агрессивную монетизацию. Вот тут и выходит на сцену идеологически кошерный свободный преемник — Syncthing.
Читать дальше →
Total votes 57: ↑55 and ↓2+53
Comments82

Java 8 и паттерн Стратегия

Reading time9 min
Views33K
Потенциально возможное продолжение книги Паттерны проектирования (Элизабет Фримен и другие).

На дворе 2017 год. В компанию, где работает старший разработчик Джо, пришел на стажировку молодой студент Мартин. Он целый год скрупулезно изучал Java по современному учебнику с акцентом на функциональные интерфейсы, лямбда-выражения и прочие новшества.
Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments35

Краш-курс на Docker: научитесь плавать с большой рыбой

Reading time10 min
Views53K


Краткое руководство по началу работы, которое вы ищете.


Если вы следовали тенденциям развития программного обеспечения в прошлом году, то, должно быть, устали слышать термин Docker. Вероятнее всего, вы ошеломлены огромным количеством разработчиков, говорящих о контейнерах, изолированных виртуальных машинах, супервизорах и другой магии Вуду, связанной с DevOps. Сегодня мы во всем разберемся. Пора наконец понять, что такое контейнеры как услуга и зачем они нужны.

Читать дальше →
Total votes 21: ↑15 and ↓6+9
Comments16

Как киту съесть Java-приложение и не подавиться

Reading time8 min
Views61K
Здравствуйте, уважаемые хабравчане! Сегодня я хотел бы рассказать о том, как «скормить» Java-приложение докеру, как при этом лучше действовать, а чего делать не стоит. Я занимаюсь разработкой на Java более 10 лет, и последние года три провёл в самом тесном общении с Docker, так что у меня сложилось определённое представление о том, что он может и чего не может. Но ведь гипотезы надо проверять на практике, не так ли?

Я представил весь процесс как старую добрую компьютерную игру с тёплым ламповым пиксель-артом.

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

На сайте докера можно ознакомиться с рядом рекламных посулов – а именно, с обещанием увеличить скорость разработки и развертывания аж в 13 раз и повысить портативность в разработке (в частности, избавиться о сакраментального «работает на моей машине»). Но соответствует ли это реальности?

Сейчас мы попробуем доказать/опровергнуть эти утверждения.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments31

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity