Сообщество - Лига программистов
Добавить пост

Лига программистов

1 533 поста 11 431 подписчик

Популярные теги в сообществе:

JetBrains plugin - когда на маркетплейсе нет нужного

Ты садишься и делаешь свой.

JetBrains plugin - когда на маркетплейсе нет нужного Java, Jetbrains, Плагин, Криптовалюта, Cryptocurrency, Видео, YouTube, Длиннопост

По крайней мере мне так было проще.
А началось все с того, что документация для RPC API Bitcoin Core на официальном сайте отображается кривовато.

JetBrains plugin - когда на маркетплейсе нет нужного Java, Jetbrains, Плагин, Криптовалюта, Cryptocurrency, Видео, YouTube, Длиннопост

Тут мы видим псевдо json и описание полей. Длинное описание переходит на новую строку и ломает удобочитаемость и понимание вложений в объектах json... "Ну "штош". Давайте поправим, а заодно запихнем это дело в студию" - подумал я и приступил.

Ожидал, что с ходу ничего не выйдет, но нет. Сложность написания плагина зависит от целей. Для работы плагина прям в редакторе, а уж тем более с языковой разметкой - придется вникнуть в дебри SDK JB)
Мне же вполне хватило Tool Window, которое по факту представляет из себя приложение на Java Swing. Окно - это уже готовый JFrame, который вызывается студией (только в plugin.xml надо указать, какой класс дергать). В остальном можно писать обычное swing приложение. В наличии у SDK есть унаследованные элементы интерфейса с более простым конструктором. Например вместо JLabel можно использовать JBLabel. Для поддержки темной и светлой темы вообще ничего не надо. Делаем все для одной из тем, а остальное студия преобразит сама. Публикация в JB Market тоже проста до безобразия)

В прочем это пост о плагине BitcoinDocs, так что к нему и вернемся.
Чего-то подобного я не нашел.
Что делает плагин. Шастает на сайт https://bitcoincore.org/en/doc/, и парсит его с помощью Jsoup. Вытаскивает все версии для доков. Вытаскивает все API для конкретной версии. Вытаскивает все методы для конкретного API. Дергает доку и парсит ее, исправляя вид и повышая читабельность.
Проще посмотреть видео.

Знаю, знаю. Ничего особенного.
Ничего особенного ни в исходниках под лицензией MIT, ни в самом плагине, доступном в маркете JB (а значит доступна установка прямо из студии) и так же под лицензией MIT.

В будущем хочу добавить сравнение методов в двух версиях (на выбор юзера) доков, ибо они могут удаляться и появляться.

P.S.
Все. Похвастался. Ставим плюс и листаем дальше) Всем спасибо.

Показать полностью 1 1

Планирование приложения с нуля: Mindmap и структура базы данных

В этом ролике я покажу, как начать разработку нового приложения с абсолютного нуля. Мы начнем с создания mindmap, который поможет нам визуализировать основной функционал и ключевые элементы приложения. Затем перейдем к проектированию структуры базы данных, обсудим, какие таблицы и связи между ними будут необходимы для нашего приложения. Этот процесс поможет нам убедиться, что мы не упустим важные детали и сможем эффективно реализовать нашу идею.

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

Показать полностью

Продуктивность :)

Менеджер: твоя продуктивность просела в последние месяцы

Я: теперь она совпадает с моей зп

Менеджер:

Продуктивность :) Мемы, Картинка с текстом, Юмор, Продуктивность, Кот

На пути к FAANG 14

Итак, за прошедшее время я:

  1. Стал прямым свидетелем покушения на убийство (со стрельбой из пистолета в окно припаркованного авто). Из-за этого пропустил мок (был на нервах + давал показания полиции). Ууу, сука.

  2. Почти закончил топик Facebook на LeetCode.

  3. Впервые в жизни вывел собственное (и довольно крутое) решение dp-задачи, которого нет в editorial.

  4. Продвинулся по системному дизайну.

И поскольку первый пункт - это скучная, никому не интересная херня, давайте остановимся на последних трех!

Топик Facebook на LeetCode оказался довольно интересным. Некоторые задачки реально заставили попотеть, например, мне очень понравились вот эти две:

https://leetcode.com/problems/regular-expression-matching

https://leetcode.com/problems/longest-valid-parentheses

В случае с обеими мне пришлось лезть в подсказки, и у обеих мне очень понравились решения - это элегантно, красиво и не очень очевидно. Highly recommended, как говорится. Зато я смог сам решить вот это, чем вполне себе горжусь.

https://leetcode.com/problems/remove-invalid-parentheses/des...

И это еще не все! Наверняка вы ведь видели классическую DP-задачку?

https://leetcode.com/problems/decode-ways

Я уже решал ее когда-то, но как это часто бывает, тотально забыл, как, поэтому когда я открыл ее снова - засел на пару часов, перебирая и откидывая в уме разные варианты решения. И в процессе я обнаружил любопытную вещь - если строка состоит только из "1" и "2", число вариантов росло ровно как числа Фиббоначи! После этого понадобилось буквально 15 минут, чтобы вывести формулу для чисел 3-9 и 0, после чего я написал вот это:

На пути к FAANG 14 IT, Faang, Учеба

И это сработало! Более того - этого решения нет в editorial, а значит, я, пусть и случайно, сделал что-то новое и нестандартное! Не могу даже описать, как это круто. Ни о чем таком я даже и думать не мог, когда начинал год назад.

Ну и наконец системный дизайн. Тут получилось забавно - я разобрал еще три главы из книги, про которую писал в прошлой части. Один из комментаторов посоветовал мне забить ровно после 100-й страницы и переключиться на что-то конкретное, поэтому сегодня, после главы про проектирование веб-краулера (150-я страница - до меня медленно доходит), я решил из интереса чекнуть, не учу ли я что-то, что потом придется проходить еще раз в том самом всеми обожаемом курсе на Educative. И - сюрприз - все это там есть. В общем, завтра начинаю этот курс. Книгу буду просто использовать как шпаргалку.

В конце, как обычно - пожелание всем, кто идет или собирается пойти по моим стопам, не сдаваться. Неважно, как все это закончится и смогу ли я пройти с первой/второй/n-ной попытки в big tech, главное - что даже у самоучки есть шанс этого добиться. Так что занимайтесь, и не позволяйте всякой фигне типа стрельбы на улицах выбить вас из колеи больше чем на пару дней)

Показать полностью 1

Тестирование — подчищаем за собой

Так исторически сложилось, что у нас на проекте нет юнит тестов, только интеграционные и e2e.

Тестирование — подчищаем за собой Кросспостинг, Pikabu Publish Bot, Csharp, Javascript, Typescript, Текст, Telegram (ссылка)

Эволюция написания тестов


Иногда в тестах приходится подчищать за собой — удалять созданные во время выполнения теста объекты в базе, чтобы не влиять на результат других тестов. Это конечно, лишь ухудшает читабельность кода.

Мы прошли некоторая эволюция подходов для создания и удаления объектов:

1. Мы использовали try/finally, где все созданные объекты удаляются внутри блока finally. Выглядит сомнительно, когда нужно городить подобную конструкцию во многих тестах.
2. Перешли к использованию функций с колбэками. Утилитная функция создаёт и удаляет объект, а мы передаём лишь колбэк, в котором описываем логику теста и нужные нам проверки.
3. Внедрили IDisposable классы, которые мы называем Creator’ами. Они делают то же самое, что и функции с колбэками, но не добавляют ненужную вложенность, что улучшает читаемость кода. Они чем-то напоминают PageObjectModel в e2e тестах.

Использование паттерна с классами IDisposable также подходит для активации определенной настройки только в рамках одного теста и отключения её по завершении теста.

Такой подход не ограничивается только лишь C# — в TypeScript 5.2. уже появилась поддержка using и, возможно, скоро она появится и в JavaScript.

https://t.me/cherkashindev/160

Показать полностью

Задачи с собеседования по SQL про псевдостолбцы

Задачи с собеседования по SQL про псевдостолбцы Программирование, IT, Собеседование, База данных, Oracle, Mysql, Ms SQL, Postgresql, SQL, Длиннопост

Здравствуйте, друзья!

Готовы порешать SQL-задачи на тему псевдостолбцов? Что такое псевдостолбцы и примеры их использования можно почитать тут.

Эти и другие задачи с собеседования опубликованы в нашем Телеграм-канале.

Итак, задача номер 1:

В таблице TEMP_TABLE один столбец и пять строк.
Запрос SELECT 1 FROM TEMP_TABLE

а) выведет данные из первого столбца для всех строк;

б) выведет просто цифру 1;

в) выведет пять строк, в каждой из которых будет цифра 1;

г) выдаст ошибку.

Здесь нужно поставить чтение на паузу и выбрать правильный вариант ответа.
На сегодня разброс ответов на задачу такой (правильный ответ в зелёном цвете):

Задачи с собеседования по SQL про псевдостолбцы Программирование, IT, Собеседование, База данных, Oracle, Mysql, Ms SQL, Postgresql, SQL, Длиннопост

Объяснение: данный в задаче запрос выводит данные из таблицы TEMP_TABLE (так как SELECT..FROM TEMP_TABLE), поэтому будут выводиться строки из неё (все сколько есть). Но в блоке SELECT не указан ни один из (настоящих) столбцов таблицы. Не выбираются данные из какого-либо столбца.
В нашем примере указано что пока выводятся строки из таблицы TEMP_TABLE нужно выводить цифру 1, а не показывать данные какого-либо столбца.

Задача 2:
Дана следующая таблица TEST_TABLE с тремя строками:
SELECT * FROM TEST_TABLE
ID  NAME
1  NULL
2  NULL
3  NULL
Каков будет результат следующего запроса: SELECT SUM(1) FROM TEST_TABLE?

Здесь опять нужно поставить чтение на паузу и написать правильный вариант ответа. На сегодня разброс ответов на задачу такой (правильный ответ в зелёном цвете):

Задачи с собеседования по SQL про псевдостолбцы Программирование, IT, Собеседование, База данных, Oracle, Mysql, Ms SQL, Postgresql, SQL, Длиннопост

Объяснение: здесь тоже речь идёт о псевдостолбце. Пока выводятся данные из TEST_TABLE блок SELECT выводит единицу, а не какой-либо реальный столбец таблицы. Пока не смотрите на функцию SUM. Итого единица выведется три раза (по количеству строк в таблице). И вот теперь, с помощью функции SUM получим сумму всех введённых чисел (единичек), то есть число 3.

Ещё больше SQL-задач с собеседований и реальной практики в разных СУБД в нашем Телеграм-канале.

Заходи на наш Youtube-канал и найдёшь много интересного и полезного про базы данных и язык SQL.

Показать полностью 2

Что вам делать с вашими крутыми идеями для стартапа

Из канла Kinda Digital Nomad

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

Что вам делать с вашими крутыми идеями для стартапа Идея, Бизнес-идея, Стартап, IT, Программирование, Программист, Проект, Бизнес, Разработка, Приложение, Приложение на Android, Приложение на iOS

В IT для этого существует целая отдельная роль. Product owner – человек, который определяет целевую аудиторию, общается с людьми, собирает и анализирует требования. И только проделав уйму работы, он приходит к разработчикам и говорит им, что нужно что-то запрограммировать.

На начальном этапе, если ваша идея ориентирована на обычных людей, нужно провести что-то около ста интервью. Если вашей ЦА являются бизнес-компании, то хватит десяти. На интервью следует задавать правильные вопросы, иначе вы рискуете получить ложноположительный результат и ввести себя в заблуждение. Про это пишут целые книги, рекомендую прочесть пару. К примеру, "Спроси маму: Как общаться с клиентами и подтвердить правоту своей бизнес-идеи, если все кругом врут?" Р. Фитцпатрика.

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

И даже если таких людей наберется много, не бегите к программистам раньше времени. Программировать очень долго и дорого. Для начала нужно сделать прототип из палок и сами знаете чего. В интернете полно сервисов (вот, к примеру, несколько https://netpeaksoftware.com/ru/blog/10-programm-dlya-sozdani...), которые позволяют создать макет приложения и даже сделать его живым. Сделать кнопки кликабельными, анимировать переходы. Для этого даже не нужно уметь рисовать или программировать. Все, что вам потребуется, это время и упорство.

В итоге вы сможете вернуться к этим же людям и спросить, то ли это приложение, которое они себе представляли. Если да, то я вас поздравляю: вы прошли свою первую итерацию разработки. Их еще будет очень много. Вам нужно будет разбить ваше приложение на части так, чтобы разработку тоже можно было проводить итерациями. Чем короче итерация, тем лучше. Чем раньше люди смогут начать пользоваться приложением, тем быстрее вы поймете, работает ваша идея или нет. Непрерывная связь с пользователями важна на каждом этапе разработки. Изучите, что такое Customer Development и Lean. Эти методологии вам помогут.

Показать полностью 1

Поиграем в бизнесменов?

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

СДЕЛАТЬ ВЫБОР

Cron теперь Notion Calendar

Некоторое время назад Notion купил Cron, и вот недавно состоялся релиз, теперь Cron - это Notion календарь, в котором доступна интеграция, как с гугл календарём, так и с базами в Notion.

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

https://calendar.notion.so

#notion

Cron теперь Notion Calendar Кросспостинг, Pikabu Publish Bot, Notion, Google Calendar, Управление проектами

https://t.me/cherkashindev/159

Отличная работа, все прочитано!