• Как в IntelliJ IDEA преобразовать maven-проект в gradle-проект?

    @MaxLich Автор вопроса
    java developer
    Пока помогло отдельно установить грейдл и выполнить в корне проекта "gradle init". Вроде бы всё нормально преобразовалось. Пробовал запускать приложение и билдить - вроде без проблем. Посмотрю ещё дальше, как будет работать.
    Ответ написан
    Комментировать
  • Как в Gradle опубликовать свою библиотеку в локальном репозитории и потом подключить её из этого репозитория в другом приложении?

    @MaxLich Автор вопроса
    java developer
    Решение: добавить в репозитории (в build.gradle) mavenLocal(). + чтобы публиковать, надо использовать команду publishToMavenLocal.
    Ответ написан
    Комментировать
  • Как получить текущий размер компонента в Swing?

    @MaxLich Автор вопроса
    java developer
    Пока сделал так:
    private void customizeColumnModel(TableColumnModel columnModel) {
            int width = (table.getWidth() == 0)? ViewGUI.WINDOW_WIDTH :  table.getWidth();
            final int defaultColumnWidth = 100;
            int columnWidth = defaultColumnWidth;
            int columnCount = columnModel.getColumnCount();
            int widthAllColumns = columnCount * defaultColumnWidth;
            if (widthAllColumns < width) {
                columnWidth = width / columnCount;
            }
     
            for (int i = 0; i < columnCount; i++) {
                setColumnWidth(columnModel.getColumn(i), columnWidth, columnWidth, columnWidth);
            }
        }


    То есть получаю ширину главного окна, и в зависимости от этого вычисляю ширину столбцов. В принципе, нормально. Приложение тестовое, поэтому графика неважна. Но если будут более хорошие и простые предложения, то обязатально рассмотрю.
    Ответ написан
    Комментировать
  • Почему не получается распарсить xml?

    @MaxLich Автор вопроса
    java developer
    Была ошибка с импортом: импортировал не ту аннотацию (XmlElement). Исправил, но теперь вылетает NPE. Как раз при анмаршаллинге.
    Сама ошибка:
    стек-трейс эксепшена из консоли
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.sun.xml.internal.bind.v2.runtime.reflect.Lister$CollectionLister.addToPack(Lister.java:289)
    at com.sun.xml.internal.bind.v2.runtime.reflect.Lister$CollectionLister.addToPack(Lister.java:253)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Scope.add(Scope.java:106)
    at com.sun.xml.internal.bind.v2.runtime.property.ArrayERProperty$ReceiverImpl.receive(ArrayERProperty.java:198)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.endElement(UnmarshallingContext.java:597)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.endElement(SAXConnector.java:165)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:609)
    at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:351)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:243)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:214)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:214)
    at org.limantrade.model.xml.XmlParser.parse(XmlParser.java:59)
    at org.limantrade.model.xml.XmlParser.parseXmlStaff(XmlParser.java:18)
    at org.limantrade.model.PercoConnectorMock.getStaffList(PercoConnectorMock.java:42)
    at org.limantrade.model.MainModel.loadTableModelEmployees(MainModel.java:68)
    at org.limantrade.model.MainModel.loadTableModel(MainModel.java:51)
    at org.limantrade.controller.MainController.onRefreshTable(MainController.java:29)
    at org.limantrade.view.ViewGUI.fireUpdateTable(ViewGUI.java:163)
    at org.limantrade.view.guicomponents.PanelTableWithButton.lambda$addComponents$0(PanelTableWithButton.java:57)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2237)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2295)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
    at java.awt.Container.dispatchEventImpl(Container.java:2281)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    Ответ написан
  • Курсы по java - программированию от GeekBrains и Университета Иннополис? Есть ли альтернативы?

    @MaxLich
    java developer
    Всё зависит, конечно, от человека. Но могу порекомендовать джава раш или курсы Сергея Немчинского. Про гикбрейнс отзывы не очень. Судя по всему цена-качество не очень.
    Ответ написан
    Комментировать
  • Как создать COM-объект в программе на C#?

    @MaxLich Автор вопроса
    java developer
    Как понял, решение:
    CoExchangeMain oPERCo = new CoExchangeMain();
    Ответ написан
    Комментировать
  • Как сохранять дату в базе PostgreSQL?

    @MaxLich Автор вопроса
    java developer
    Решил эту проблему. Оказалось, что это был мой косяк: не заметил, и поставил тип столбца "time with time zone", а нужно было - "timestamp with time zone". Преобразование входящий даты теперь выполняю так:
    long createTime = event.getCreateTime();
    preparedStatement.setTimestamp(column, new java.sql.Timestamp(createTime), Calendar.newInstance());


    (Но думаю переделать на DateTime API из Java 8.)
    Ответ написан
    Комментировать
  • Почему java-программа, работающая с COM4J, выдаёт эксепшн?

    @MaxLich Автор вопроса
    java developer
    Оказалось, что нужно было запустить программу под 32-битной виндой, с 32-битной джава-машиной. Проблема решена.
    Ответ написан
  • Как в log4j одновременно писать в разные файлы сообщения с разными уровнями?

    @MaxLich Автор вопроса
    java developer
    Пока помогло удаление уровня из объявления логгера (в конфиге; рутового логгера) и добавление каждому аппендеру своего уровня (через threshold). Вот изменённый log4j.properties:
    содержимое файла log4j.properties
    # Базовый уровень логирования
    log4j.rootLogger=TRACE, info_log_file, stdout, full_log_file
    
    # Апендер для работы с файлами
    log4j.appender.info_log_file=org.apache.log4j.RollingFileAppender
    log4j.appender.info_log_file.File=info_log.log
    log4j.appender.info_log_file.threshold=INFO
    log4j.appender.info_log_file.MaxFileSize=1MB
    log4j.appender.info_log_file.MaxBackupIndex=10
    log4j.appender.info_log_file.layout=org.apache.log4j.EnhancedPatternLayout
    log4j.appender.info_log_file.layout.ConversionPattern=%d{ISO8601} [%-5p][%20c{-2}] - %m%n
    
    #вывод в консоль
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.threshold=INFO
    log4j.appender.stdout.layout=org.apache.log4j.EnhancedPatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} [%-5p][%20c{-2}] - %m%n
    
    # Апендер для работы с файлами
    log4j.appender.full_log_file=org.apache.log4j.RollingFileAppender
    log4j.appender.full_log_file.File=full_log.log
    log4j.appender.full_log_file.threshold=TRACE
    log4j.appender.full_log_file.MaxFileSize=1MB
    log4j.appender.full_log_file.MaxBackupIndex=10
    log4j.appender.full_log_file.layout=org.apache.log4j.EnhancedPatternLayout
    log4j.appender.full_log_file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p] [%c{1}:%L] - %m%n

    Но я не уверен, что это правильное решение.
    Ответ написан
    Комментировать
  • Кто такой программист 1С?

    @MaxLich
    java developer
    1С - это платформа для автоматизации управления предприятием. Это и бухучёт, и кадровый учёт, и складской, и документооборот, и учёт производства, и т.д. Довольно скучная тема для программиста. Нужно хорошо знать всякие учёты, экономику, понимать бизнес-процессы. Да и программируют там на русском (у них свой узкий язык). Классическим программированием это не назвать. Плюс, как тут написали, нужно работать со всякими формочками и отчётами. Реально это интереснее гуманитариям.
    Вакансий по 1С так много, потому что много предприятий его используют. Особенно это актуально в провинции. Там, кстати, как я тут уже где-то написал - у таких программистов большие зарплаты, поэтому в провинции некоторые отучившиеся в вузе программисты идут в 1С.
    Ответ написан
  • Как пишут REST API на Java?

    @MaxLich
    java developer
    Тоже задавался этим вопросом, но пока особо не копал в эту сторону. Нашёл пока на степик курс, но ещё не прошёл его: курс по созданию веб-приложения на джава
    Ответ написан
    Комментировать
  • Что и на чём программировать в 13 лет?

    @MaxLich
    java developer
    Как тут уже писали, нужно сначала хорошо закончить школу, хорош сдать ЕГЭ и поступить в хороший вуз по специальности. А это всё не совсем связано с программированием. Так что хорошо было бы прокачиваться в математике и информатике для начала. Ну и олимпиады будут в любом случае плюсом (и для поступления, в том числе).
    Как говорится, у программисты есть две функции - собственно программировать и устраиваться на работу. И эти две вещи не сильно между собой связаны. Что нужно для прохождения собеседований, не всегда нужно для самой работы. И наоборот - если ты пишешь хорошие программы, но не знаешь общей теории и тонкостей языка, то можешь и "не добраться" до работы. То есть ты просто не пройдёшь собеседование и всё. Тут такая же аналогия: одно делать это непосредственно программировать, другое дело выполнять всё сопутствующее, чтобы собственно этим программированием заниматься. А в данном случае сопутствующее - это математика и информатика в школе, сдача выпускных экзаменов, поступление в ВУЗ (ну и учёба в ВУЗе, его окончание на хорошие оценки).
    По поводу языка - точно не знаю, но если изучать джаву, то потом можно заняться андроидом. Обычно подросткам и молодым парням это нравится (программировать для андроида).
    Ответ написан
    Комментировать
  • Есть ли аналоги JavaRush для c# желательно на русском?

    @MaxLich
    java developer
    нашёл неплохие курсы SQL на степик, плюс ещё по созданию веб-приложения на джава там есть курсы. По Пайтону видел курсы. Думал, что по си шарпу тоже что-то должно быть, но поискав - не нашёл. Вот только тыц. Так что даже не знаю, что есть на русском. Могу только предложить книги (разве что обратной связи не будет).
    Кроме того, ещё можно попробовать найти ментора или поискать курсы майл-ру, яндекса или ещё какой-нибудь такой же крупной русскоязычной конторы.
    ЗЫ Но это если нужны именно русскоязычные курсы. Как я понял, про английские тебе уже рассказали.
    Ответ написан
    Комментировать
  • Что изучить в комплексе с курсами Javarush, чтобы можно было брать заказы на фрилансе или куда-то устроиться как Java Junior?

    @MaxLich
    java developer
    Тоже прошёл джавараш, но не прошёл у них стажировку. А о ней многие хорошие отзываются. Да и видел где-то там программу стажировки: вроде всё, что понадобится на работе (одного чистого джавараш не достаточно). Так что, если есть возможность, идите ещё на стажировку. Но это если планируете идти в интерпрайз. Так-то можно в андроид уйти после хорошего изучения джавакор. (и тогда, конечно, эта стажировка в джавараш Вам не нужна).
    Ответ написан
    Комментировать
  • Почему у меня программа не работает так, как надо, когда я запускаю её двойным кликом?

    @MaxLich Автор вопроса
    java developer
    В общем-то решил эту проблему. Получился такой метод:
    private static String getClassLocation(Class<?> c) {
            URL pathURL = c.getProtectionDomain().getCodeSource().getLocation();
            try {
                Path path = Paths.get(pathURL.toURI());
                String rootStr = path.getRoot().toString();
                return rootStr + path.subpath(0, path.getNameCount()-1).toString() + File.separator;
            } catch (URISyntaxException e) {
                e.printStackTrace();
                return "";
            }
        }

    На вход подаю класс, в котором лежит этот метод. В итоге получается абсолютный путь к папке, в которой лежит джар-файл. Ну а дальше всё просто: присоединяю к этому пути имя проперти-файла, подаю эту строку на вход методу load() из класса Properties (естественно, перед этим создаю объект этого класса), и дальше получаю объект Properties с нужными данными. Работает и в линуксе (убунту), и в виндоуз (виндоуз 7 в моём случае).
    Ответ написан
    Комментировать
  • Какие есть бесплатные хостинги MySQL Server?

    @MaxLich Автор вопроса
    java developer
    Нашёл бесплатный ресурс. Он упоминался на одном форуме. Его адрес - freesqldatabase.com. Пока протестировал только в IDE, и там всё работает, думаю, не возникнет проблем и во время тестирования собранного проекта. (Кстати, если что, похоже, этот ресурс не поддерживает русскоязычный текст в значениях полей; у меня по крайней мере не работало, пока я не начал забивать в базу чисто английский текст.)
    Ответ написан
  • Можно ли (и если да, то как) сконвертировать опыт фрилансера в годы работы?

    @MaxLich
    java developer
    Да в любом случае в резюме и на собеседовании надо указывать/говорить, что ты в это время работал на фрилансе. Если какие-то года не укажешь в резюме, то к тебе будут вопросы - что ты делал в это время. Фиг знает, может ты балду пинал, и ничем не занимался, и значит, фиговый работник. Так что лучше опыт максимально расписывать (если он реально был), и можно даже чуть-чуть накидывать (около полугода, например), но конечно, чтобы это не противоречило здравому смыслу.
    Ответ написан
    Комментировать
  • Как устроиться на первую работу в IT?

    @MaxLich
    java developer
    Здравствуйте. Пару вещей:
    1. Вы пишите про несколько проектов в своём резюме. Это ваши домашние проекты? Или Вы с кем-то/для кого/куда-то это писали?
    2. Если была какая-то стажировка или курсы по фронтенду, то лучше это указать в резюме. (Стажировку можно указать в опыте работы, курсы можно указать в доп.образовании или тоже в опыте, указав, что это была стажировка). Если такие курсы не проходили или стажировку, то желательно пройти - шансы найти работу повышаются.
    3. Можете попробовать опенсорс или фриланс/удалёнку. Потом укАжите это в своём опыте. Да и потренеруетесь немного
    4. Слышал, что HR-ы считают резюме подозрительными, если там вообще никакой не указан опыт работы (и если человеку не 18 лет). Так что, думаю, это тоже может влиять. Хотя если работали вообще-то не по сфере IT, то тут надо подумать (но по идеи, если там занимались чем-то айтишным, то думаю, тогда можно указать, и это будет плюс).
    Ответ написан
    Комментировать
  • Как попасть в game-dev и с чего начать карьеру в этой области если ты веб-разработчик?

    @MaxLich
    java developer
    А почему сам веб не рассматриваете в качестве платформы для игр? Сейчас довольно-таки популярны, сильно развиты и широко распространены браузерные игры. Помнится, тут кто-то писал, что в фирме делал на PHP бекенд для браузерной стратегии.
    Ответ написан
    2 комментария
  • Как писать в файл в jar-нике из класса, находящегося в том же jar-нике?

    @MaxLich Автор вопроса
    java developer
    Пока нашёл это: ссылка. И судя по всему это невозможно. Можно только писать в какой-то внешний файл. Это неудобно, потому что проще распространять программу в виде одного файла - jar. Выходом вижу запаковку папки с jar-ником и внешним файлом в архив, и распространение программы в таком виде. (В моём случае, я могу просто каждый раз создавать файл топ-листа в той же папке, где находится jar-ник, и работать уже с этим созданным файлом.)

    ЗЫ Только не пойму пока, как работать тогда с файлом из ИДЕИ, надо подумать....
    Ответ написан