Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9 10 .. 134   вперед  Ctrl
 Re: Где взять опыт?)  [new]
забыл ник
Member

Откуда:
Сообщений: 3048
asv79
andreykaT
может да. а может и не да. для начала выучи спринг и хибер. и напиши какой-нибудь петшоп. это так, совет, в целях самообразования.

никому не нужен никакой пет проект,у меня есть ТГ бот,который охватывает стек технологий достаточный на мидла,но его никто даже не смотрел ни разу и это понятно почему- кто скажет что это мой код?-никто ,Поэтому смысл в этих пет проектах нулевой.
для самообразования тоже слабо подходит-потому что в любом случае без опытного человека,который покажет верное направление ты только будешь говнокодить и со временем это войдет в привычку)
я уже сейчас смотрю на код своих первых проектов и волосы дыбом встают,особенно когда почитал про SOLID


Так и говори - есть опыт, писал за деньги телеграм бота, команда из 3 человек, стек такой-то, не понимаю искренне. Пробуй приукрасить немного, но без фанатизма. У тбея ЕСТЬ опыт, если ты смог написать этого бота
22 мар 19, 23:48    [21841401]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
забыл ник

Так и говори - есть опыт, писал за деньги телеграм бота, команда из 3 человек, стек такой-то, не понимаю искренне. Пробуй приукрасить немного, но без фанатизма. У тбея ЕСТЬ опыт, если ты смог написать этого бота

https://github.com/apb12
ну какой тут опыт? это так себе студенческая поделка
23 мар 19, 11:41    [21841605]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
fixxer
Member

Откуда:
Сообщений: 737
asv79
https://github.com/apb12
ну какой тут опыт? это так себе студенческая поделка


Действительно, на джуна этот код не тянет. Можно 100500 фреймворков выучить, но пока тут проблема с программированием и проектированием приложения в принципе. Вам бы какие фундаментальные труды почитать, изучить код популярных опенсорсных проектов, попробовать поконтрибьютить и посмотреть как будут комментировать пулреквесты.
23 мар 19, 15:25    [21841695]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
fixxer
asv79
https://github.com/apb12
ну какой тут опыт? это так себе студенческая поделка


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

этот код был написан год назад и сейчас я вижу весь этот ужас сам,
изучаю я уже год и паттерны и чужой код и SOLID принципы блюдю))
мне нужен ввод в рабочий проект ,за 1-2 месяца ,что дают на onboard я вольюсь в проект 100%.
а читать чужие труды можно и 10 лет и 100 ,но пока сам не начнешь на реальном проекте так и будешь вечным стажером.
23 мар 19, 17:33    [21841724]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
andreykaT
Member

Откуда:
Сообщений: 2433
это не бот и не приложение. это песочница какая-то уровня хеловорлд я не буду говорить о форме структуре формате там и к чему придраться, ты банально пустые строки не удаляешь. про ифелсифы на 200 строк, вынос некоторых констант в конфиги и проблемы с неймингом я уж и не заикаюсь.
23 мар 19, 18:39    [21841743]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
andreykaT
Member

Откуда:
Сообщений: 2433
asv79
fixxer
пропущено...


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

этот код был написан год назад и сейчас я вижу весь этот ужас сам,
изучаю я уже год и паттерны и чужой код и SOLID принципы блюдю))
мне нужен ввод в рабочий проект ,за 1-2 месяца ,что дают на onboard я вольюсь в проект 100%.
а читать чужие труды можно и 10 лет и 100 ,но пока сам не начнешь на реальном проекте так и будешь вечным стажером.

ну так исправь если ужас видишь.

да. учатся на чужом труде. это норм. все так делают. но не стоит ждать что тебя возьмут в проект и всему научат. нет. этого не будет. учись сам.
23 мар 19, 18:40    [21841744]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
andreykaT
это не бот и не приложение. это песочница какая-то уровня хеловорлд я не буду говорить о форме структуре формате там и к чему придраться, ты банально пустые строки не удаляешь. про ифелсифы на 200 строк, вынос некоторых констант в конфиги и проблемы с неймингом я уж и не заикаюсь.

этот код я написал год назад,тоесть всего месяц изучая java)
да там куча проблем -между тем этот код работает без багов уже год и в базе больше 2000 человек)
да не SOLID ,да я называл переменные и классы не по конвенции но блин это первый опыт и мало того что он рабоатет он приносит мне деньги)
23 мар 19, 21:51    [21841784]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
andreykaT
Member

Откуда:
Сообщений: 2433
ты молодец. так что тебе мешает отрефакторить его чтоб было всё по канонам ооп солид и нейминг конвенциям?
23 мар 19, 22:18    [21841795]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
andreykaT
ты молодец. так что тебе мешает отрефакторить его чтоб было всё по канонам ооп солид и нейминг конвенциям?

простой вопрос зачем?
24 мар 19, 00:11    [21841824]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 42959
asv79
andreykaT
ты молодец. так что тебе мешает отрефакторить его чтоб было всё по канонам ооп солид и нейминг конвенциям?

простой вопрос зачем?

Я поясню. Если этот код показывать. То у смотрящего неизбежно возникают вопросы.
Опытным глазом можно отметить некую избыточность. То что можно декларировать
в массиве - почему-то декларировано в плоском коде. Эдакая себе статик-инициализация.
Кому - пустяк а кому и code-review point. +Ужасающего вида конструкции if-else которые
алгоритмически решают задачу хеш-мапы. Они биективно отображают просто ключ на значение.
И опытный разработчик обычно их так и реализует.

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

Тезис дескыть "оно работает" в данном случае не имеет никакого значения ведь никто не анализировал
с каким coverage оно вообще работает и какой % кода там рабочий а какой просто шлак.

Кстати это последний поинт. Написать альтернативную реализацию которая будет в 10 раз
короче твоей но при этом будет выполнять те-же функции бота.

Подумай об этом. Это хороший тест на профпригодность.
24 мар 19, 00:55    [21841831]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
mayton
. +Ужасающего вида конструкции if-else которые
алгоритмически решают задачу хеш-мапы. Они биективно отображают просто ключ на значение.
И опытный разработчик обычно их так и реализует.

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

Тезис дескыть "оно работает" в данном случае не имеет никакого значения ведь никто не анализировал
с каким coverage оно вообще работает и какой % кода там рабочий а какой просто шлак.

Кстати это последний поинт. Написать альтернативную реализацию которая будет в 10 раз
короче твоей но при этом будет выполнять те-же функции бота.

Подумай об этом. Это хороший тест на профпригодность.

То что ты написал и называется "ОПЫТ РАБОТЫ",я знаю теорию ,знаю что такое хэшмапа и ее методы ,но не знаю как это применить на практике.
Это как начинающий водитель-он знает устройство машины,все ее органы управления и что они делают ,но вот водить пока не умеет или делает это очень не уверенно)

ПС.полдня сидел думал как с помощью мапы сделать - так не придумал
Мне нужно от пользователя стринг переменная в определенном патерне дд-мм-гггг 12:00:00 в таком виде это кладется в бд.
ключ мапы -уникальный ID пользователя- но как положить три значения ?дд мм и гггг-делать три мапы?как компилятор поймет где год где месяц и день? чтобы потом все это собрать
либо использовать в качестве значение лист с тремя параметрами -опять же возникает вопрос как узнать где год месяц и день-ведь пользватель нажимает кнопки в рандомном порядке
поэтому приходится юзать иф ,Чтобы понять что человек нажал и положить эти данные куда нужно
24 мар 19, 13:39    [21842003]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 42959
Я делаю обычно в утилитах 2 функции.

public static LocalDateTime fromSpecificDate(String date) {
    ........
}

public static String toSpecificDate(LocalDateTime date) {
  .....
}


И все операции бизнеса делаются в LocalDateTime. Стровое представление - только для внешнего хранения
в файлах.
24 мар 19, 14:58    [21842080]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
mayton,
Телеграмм апи не предоставляет возможностей для этого.я не могу заставить польщователя вбивать дату в нужном мне формате.имеено поэтому я использую набор кнопок.это и красивее и инфомативнее для пользователя и самое главное не важен порядок ввода.
Я не вижу в силу отсутствия опыта как это провернуть с хэшмапой
24 мар 19, 16:44    [21842167]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
mayton
Я делаю обычно в утилитах 2 функции.

public static LocalDateTime fromSpecificDate(String date) {
    ........
}

public static String toSpecificDate(LocalDateTime date) {
  .....
}


И все операции бизнеса делаются в LocalDateTime. Стровое представление - только для внешнего хранения
в файлах.

Я получаю строковое значение а в базу коаду имено локал дату
24 мар 19, 16:45    [21842169]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 42959
asv79
mayton,
Телеграмм апи не предоставляет возможностей для этого.я не могу заставить польщователя вбивать дату в нужном мне формате.имеено поэтому я использую набор кнопок.это и красивее и инфомативнее для пользователя и самое главное не важен порядок ввода.
Я не вижу в силу отсутствия опыта как это провернуть с хэшмапой

Мой комментарий касался этой длинной колбасы.
} else if (call_data1.equals("2016")) {
                    year = "2016";
                } else if (call_data1.equals("2017")) {
                    year = "2017";
                } else if (call_data1.equals("2018")) {
                    year = "2018";
                } else if (call_data1.equals("2019")) {
year = "2019";

Тут идет наивная попытка распознать 2016 и другие литералы как дату с точностью до года. Это надо сделать
регуляркой. Типа если call_data1 матчится на \d{4} тогда это полюбому год.

Eсли \d{2} то день или месяц. А если перечисление из {j|f|m|a|....} то это месяц точно.

Статическую инициализацию
rowInline.add(new InlineKeyboardButton().setText("январь").setCallbackData("j"));
                    rowInline.add(new InlineKeyboardButton().setText("февраль").setCallbackData("f"));
                    rowInline.add(new InlineKeyboardButton().setText("март").setCallbackData("m"));
                    rowInline.add(new InlineKeyboardButton().setText("апрель").setCallbackData("a"));
rowInline1.add(new InlineKeyboardButton().setText("май").setCallbackData("mm"));


Можно заменить на массив { "январь", "февраль" ...} и коротким в 1 строку кодом инициализировать rowInline коллекцию.

Попробуй сделай эти рефакторинги. А дальше - посмотрим что еще.
24 мар 19, 17:12    [21842173]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 42959
asv79
mayton
Я делаю обычно в утилитах 2 функции.

public static LocalDateTime fromSpecificDate(String date) {
    ........
}

public static String toSpecificDate(LocalDateTime date) {
  .....
}


И все операции бизнеса делаются в LocalDateTime. Стровое представление - только для внешнего хранения
в файлах.

Я получаю строковое значение а в базу коаду имено локал дату

Тогда я не понимаю в чем затруднение. Лучше приведи код который "плох".
24 мар 19, 17:13    [21842174]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
mayton
asv79
mayton,
Телеграмм апи не предоставляет возможностей для этого.я не могу заставить польщователя вбивать дату в нужном мне формате.имеено поэтому я использую набор кнопок.это и красивее и инфомативнее для пользователя и самое главное не важен порядок ввода.
Я не вижу в силу отсутствия опыта как это провернуть с хэшмапой

Мой комментарий касался этой длинной колбасы.
} else if (call_data1.equals("2016")) {
                    year = "2016";
                } else if (call_data1.equals("2017")) {
                    year = "2017";
                } else if (call_data1.equals("2018")) {
                    year = "2018";
                } else if (call_data1.equals("2019")) {
year = "2019";

Тут идет наивная попытка распознать 2016 и другие литералы как дату с точностью до года. Это надо сделать
регуляркой. Типа если call_data1 матчится на \d{4} тогда это полюбому год.

Eсли \d{2} то день или месяц. А если перечисление из {j|f|m|a|....} то это месяц точно.

Статическую инициализацию
rowInline.add(new InlineKeyboardButton().setText("январь").setCallbackData("j"));
                    rowInline.add(new InlineKeyboardButton().setText("февраль").setCallbackData("f"));
                    rowInline.add(new InlineKeyboardButton().setText("март").setCallbackData("m"));
                    rowInline.add(new InlineKeyboardButton().setText("апрель").setCallbackData("a"));
rowInline1.add(new InlineKeyboardButton().setText("май").setCallbackData("mm"));


Можно заменить на массив { "январь", "февраль" ...} и коротким в 1 строку кодом инициализировать rowInline коллекцию.

Попробуй сделай эти рефакторинги. А дальше - посмотрим что еще.

,заменить на масссив не получится ибо это кнопки и они должны быть в таком виде как в этом коде.12 кнопок -12 месяцев.
С годом да если получить стринга из 4 чаров это год,а с месяцем проблеиа и день и месяц могут из двух чаров состоять.телеграмм дает не слишком много функционала в этом плане .приидется сравнивать calldata
24 мар 19, 17:32    [21842181]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
andreykaT
Member

Откуда:
Сообщений: 2433
причем тут телеграм. в телеге кнопочные панели и отправляются и отображаются ввиде джейсона. ту либу что ты юзаешь челы просто сделали чтоб оно конвертило из жава похо объекта в джейсон. и этот самый объект ты и конструируешь. набор кнопок и прочего барахла было бы правильно хранить в ресурсах в виде например, того же самого джейсона. если это статические ресурсы и например, месяцы не будут переименовываться или структура кнопок меняться "на лету". вынеся в ресурсы свои панели кнопок, ты свой код уменьшишь (судя по тому что я вижу) раз так в пять.
24 мар 19, 18:14    [21842191]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
andreykaT
причем тут телеграм. в телеге кнопочные панели и отправляются и отображаются ввиде джейсона. ту либу что ты юзаешь челы просто сделали чтоб оно конвертило из жава похо объекта в джейсон. и этот самый объект ты и конструируешь. набор кнопок и прочего барахла было бы правильно хранить в ресурсах в виде например, того же самого джейсона. если это статические ресурсы и например, месяцы не будут переименовываться или структура кнопок меняться "на лету". вынеся в ресурсы свои панели кнопок, ты свой код уменьшишь (судя по тому что я вижу) раз так в пять.


Смотри -я как прилежный ученик привык читать документацию)
я прочитал доки к telegram API и обнаружил там два способа сделать кнопки
inlinekeyboard и replykeyaboard ,я выбрал подходящий для меня и реализовал его именно так ,как это прописано в доках

Я думаю для стажера/джуниора это более чем достаточно и требовать чего то большего,особенно работы с json ну как минимум некорректно.
это равносильно что ты посадишь в болид формулы 1 человека,Который вчера права получил и будешь искренне удивляться ,Чего он тронуться не может))
поймы ты андрейкаТ это называется опыт ,чтобы его приобрести нужно работать.
Ты мне говоришь учи спринг и хибер - вот я щас этим активно и занимаюсь
24 мар 19, 20:29    [21842244]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 42959
asv79
mayton
пропущено...

Мой комментарий касался этой длинной колбасы.
} else if (call_data1.equals("2016")) {
                    year = "2016";
                } else if (call_data1.equals("2017")) {
                    year = "2017";
                } else if (call_data1.equals("2018")) {
                    year = "2018";
                } else if (call_data1.equals("2019")) {
year = "2019";

Тут идет наивная попытка распознать 2016 и другие литералы как дату с точностью до года. Это надо сделать
регуляркой. Типа если call_data1 матчится на \d{4} тогда это полюбому год.

Eсли \d{2} то день или месяц. А если перечисление из {j|f|m|a|....} то это месяц точно.

Статическую инициализацию
rowInline.add(new InlineKeyboardButton().setText("январь").setCallbackData("j"));
                    rowInline.add(new InlineKeyboardButton().setText("февраль").setCallbackData("f"));
                    rowInline.add(new InlineKeyboardButton().setText("март").setCallbackData("m"));
                    rowInline.add(new InlineKeyboardButton().setText("апрель").setCallbackData("a"));
rowInline1.add(new InlineKeyboardButton().setText("май").setCallbackData("mm"));


Можно заменить на массив { "январь", "февраль" ...} и коротким в 1 строку кодом инициализировать rowInline коллекцию.

Попробуй сделай эти рефакторинги. А дальше - посмотрим что еще.

,заменить на масссив не получится ибо это кнопки и они должны быть в таком виде как в этом коде.12 кнопок -12 месяцев.
С годом да если получить стринга из 4 чаров это год,а с месяцем проблеиа и день и месяц могут из двух чаров состоять.телеграмм дает не слишком много функционала в этом плане .приидется сравнивать calldata

Думаешь не получится? Поспорим?
24 мар 19, 20:54    [21842251]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
mayton
Думаешь не получится? Поспорим?

думаю что нет
чтобы вывести 3 ряда по 4 кнопки в каждом нужно делать имеено так,по крайне мере все те боты что я смотрел были реализованы так же.
если бы не было задачи вывести три ряда кнопок ,то да можно было это засунуть в массив(хотя как ты в массив передашь связку ключ-значение?) и потом передать просто в rowinline
но у меня как ты заметил три rowinline для месяцев и 6 для дней.
можно конечно изхитриться и разбить массив и нужное число запихать в каждый из row + каким то образом помимо settext прикрутить callbackquery
24 мар 19, 21:36    [21842266]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 42959
Мы говорим о том куске кода
Который опубликован в github?
24 мар 19, 22:44    [21842290]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
mayton
Мы говорим о том куске кода
Который опубликован в github?

да

К сообщению приложен файл. Размер - 130Kb
24 мар 19, 23:40    [21842300]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member [заблокирован]

Откуда: Тверь
Сообщений: 2735
вот так он выглядит в роботе,я не могу в один ряд ставить месяцы это будет не удобно для пользователей
24 мар 19, 23:41    [21842302]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 42959
Как тебе такой вариант?

Я описал месяцы как у тебя. И сохранил семантику колонок и столбцов. И
даже добавил декодирование шифров месяцев. Я .. можно сказать используя Java-language
создал DSL который описывает твой интерфейс.

String[][] months = { 
  { "январь:j" ,  "февраль:f", "март:m",   "апрель:a" },
  { "май:mm" ,    "июнь:i",    "июль:ii",  "август:av" },
  { "сентябрь:s", "октябрь:o", "ноябрь:n", "декабрь:d" }
}


Дальше - дело техники. Допишешь InlineKeyboardMarkup сам?
24 мар 19, 23:56    [21842305]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9 10 .. 134   вперед  Ctrl
Все форумы / Java Ответить