• Карьера программиста после 30+. Миф или реальность?

    timych
    @timych
    Уже как-то отписывался в подобной теме(тут их дофига :)). Мне через две недели 36. Работаю немногим более двух лет. Очень повезло с первым работадателем- поверил в меня. Основная проблема трудоустройства в таком возрасте это не отсутствие опыта, а то что состоявшийся семейный человек как правило просто не может себе позволить пойти работать за гроши - ему жить на что-то надо. А вчерашний студент, запросто. У него есть поддержка в лице родителей как правило. Поэтому готовтесь годик понищенствовать. Кстати некоторые работадатели наоборот с удовольствием берут зрелых людей- им есть что терять :), поэтому и в работе более ответственные.
    Так что не миф :)
    Ответ написан
    Комментировать
  • Как сделать HttpServletRequest доступным из другого потока?

    timych
    @timych
    Не очень понял - вам нужен context path вашего приложения или полный URL?
    Если первое, то можно например сделать такой листенер :
    @WebListener
    public class MyApplicationLifeCicleListener implements ServletContextListener {
    	@Override
    	public void contextInitialized(ServletContextEvent event) {
                  // cохраняем куда-нибудь путь
    		System.out.println(event.getServletContext().getContextPath());
    	}
    
    	@Override
    	public void contextDestroyed(ServletContextEvent event) {
    	}
    }


    Если второе то как вариант такой костыль - делаем реквест-листенер

    @WebListener
    public class MyRequestListener extends RequestContextListener {
    
    	@Override
    	public void requestInitialized(ServletRequestEvent requestEvent) {
    		super.requestInitialized(requestEvent);
    		if (requestEvent.getServletRequest() instanceof HttpServletRequest) {
                            // cохраняем путь
    			String url = ((HttpServletRequest) requestEvent.getServletRequest()).getRequestURL().toString();
    			System.out.println(url);
    		}
    	}
    }

    И в первом и втором случае вам придется либо завести статическую переменную (можно прямо в листенере) для записи url. Либо класс-синглтон, который вам вернет нужное значение.
    Но это конечно же костыль, так как для того чтобы к примеру получить URL во втором случае, нужно дождаться хотябы одного реквеста. Да и урл в зависимости от ресурса будет меняться.

    А что вам мешает пользоваться HttpServletRequest в родном потоке?
    И почему вы не знаете свой URL? (Можно его в какой-нибудь конфиг прописать)
    У вас REST сервис или сервлеты?
    Ответ написан
    Комментировать
  • Как JavaFX Separator заставить быть шириной в 1px?

    timych
    @timych
    Мне кажется что тут нет никакой ошибки - элемент имеет нулевую высоту. Бордер добавляется с каждой стороны . То есть верхний бордер плюсуется с нижним - вот вам и два пикселя.
    Не уверен на сто процентов, но возможно это вам поможет: -fx-border-style: hidden hidden solid hidden;
    Ответ написан
    Комментировать
  • Можно ли устанавливать в svg элементам path значение слоя, как в css?

    timych
    @timych
    Если вы про аналог z-index , то да можно с помощью атрибута render-order. Но элементы должны находиться в группе (тег "g").
    Тут подробнее: dev.w3.org/SVG/modules/renderorder/SVGRenderOrder.html
    Ответ написан
    Комментировать
  • Как перекрасить картинку в Java?

    timych
    @timych
    www.programcreek.com/java-api-examples/index.php?a...
    Вот вроде что-то похоже..
    Ответ написан
    Комментировать
  • Что не так с моим pom.xml для сборки десктопного приложения в exe?

    timych
    @timych
    Слушайте может я и не прав, но этот плагин вроде для ЗАПУСКА приложения, а не для создания .exe файлов.
    Вам скорее всего нужен javafx-maven-plugin.
    Вот статейка по настройке старой версии - devcolibri.com/3264
    Вот моя конфигурация для создания приложения под виндовс и jar для мультиплатформы (требуется Java 8):
    <build>
    		<plugins>
    			<plugin>
    				<groupId>com.zenjava</groupId>
    				<artifactId>javafx-maven-plugin</artifactId>
    				<version>8.1.2</version>
    				<executions>
    					<execution>
    						<goals>
    							<goal>jar</goal>
    							<goal>native</goal>
    						</goals>
    					</execution>
    				</executions>
    				<configuration>
    					<mainClass>org.tn.gallery.control.Application</mainClass>
    					<nativeOutputDir>${app.path}/win</nativeOutputDir>
    					<jfxAppOutputDir>${app.path}/jfx</jfxAppOutputDir>
    					<verbose>true</verbose>
    					<appName>jGallery</appName>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>

    Также для того чтобы плагин смог создать нативное приложение с .exe файлом вам необходимо поставить эту штуку на машину: www.jrsoftware.org/isdl.php
    Ответ написан
    Комментировать
  • Можно ли использовать Gson как синглтон?

    timych
    @timych
    Я его всегда как статический член класса использую. Проблем не замечал.
    Ответ написан
    Комментировать
  • На чём писать программу для работы с таблицами Excel?

    timych
    @timych
    Задание странное. Но иногда действительно нужно обрабатывать такие документы не в редакторах.
    Вот набор библиотек , который вам нужен если будете реализовывать на Java
    mvnrepository.com/artifact/org.apache.poi
    https://poi.apache.org/spreadsheet/examples.html
    Ответ написан
    Комментировать
  • Как сериализовать и десериализовать интерфейсы?

    timych
    @timych
    Если переменные представляют наследников одного общего типа(интерфейса), то вслучае с json вам необходимо аннотировать его аннотацией @JsonSubTypes, в которой нужно перечислить всех наследников. Когда получите десереализованный обьект, просто через instanceof проверяете принадлежность к необходимому типу (классу) и кастите обьект до этого класса. Вот простой пример (лень самому писать :)): https://nickebbitt.wordpress.com/2014/01/31/handli...

    PS: В примере есть ошибка - абстрактный класс Animal должен имплементировать Serializable
    Ответ написан
  • Насколько глубоко нужно изучать JavaScript J2EE разработчику?

    timych
    @timych
    Ну по своему (скромному) опыту скажу что знать чистый JS желательно. Даже если вам не придется на нем писать, то хотябы для понимания что происходит на клиенте. Знать же JS фреймворки не обязательно если вы именно JavaEE разработчик. Сам два года работаю GWT разработчиком (сейчас еще добавился весь бякенд стек)- на JS иногда приходится немного писать, но никаких фреймворков сложнее JQuery мы не используем.
    Ответ написан
    Комментировать
  • WEB services, в чем проблема?

    timych
    @timych
    Может просто ваш сервис послал null?
    Дебажить не пробовали?
    Код рест ресурса тоже неплохо было бы выложить.
    Ответ написан
    Комментировать
  • Как правильно составить структуру таблиц(MySQL) и классов(Java)?

    timych
    @timych
    Если я правильно понял, то есть один товар, у которого три разных стоимости? Так?
    Почему нельзя тогда положить все в одну таблицу вида :
    NAME | PRICE_1 | PRICE_2 | PRICE_3

    Сформулируйте - в чем вобще состоит задача.
    Ответ написан
    3 комментария
  • С чего начать изучение Java?

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

    timych
    @timych
    Код писать не буду(немного напрягитесь сам), но вот вам порядок действий: Циклом перебирайте массив начиная с нулевого элемента до последнего. Каждый раз доставайте значение из массива по текущему индексу цикла. Проверяйте это значение - а не является ли оно пятеркой?. Если да то положите текущий индекс куда-нибудь. (Для начала можно просто в консоль выводить).
    В общем как вам написали выше - напишите хоть какой-то код, а мы поправим :)
    Ответ написан
    Комментировать
  • Как сделать правильно POST запрос java?

    timych
    @timych
    Вы не очень понимаете что у вас происходит в коде. Пара комментариев в коде:
    @POST
        @Path("/add")
        @Produces(MediaType.APPLICATION_JSON)
        public String saveNewPerson(JSONObject person) throws JSONException {
    	
    	//вызов этого метода никак  не влияет на код, так как  toString() возвращает строку, но вы ее никак не используете
            person.toString();
    		// тут как раз и происходит toString(); 
             System.out.println(person + " output in service.java");
    		 //почему в savePerson() вы кладете NULL?
            if (!personDao.savePerson(null)) {
                return "Person create success   id=";
     
            } else {
                return "error, check information for new person";
            }
        }
    	
    	******************************************
    			// Тут нужно класть Entity класс ,а не JSONObject.
                session.saveOrUpdate(person);


    Вы передаете в метод null и естественно у вас ошибка. Но даже если бы вы передавали свой JSONObject, то ничего не произойдет, потому как сохранять необходимо персистентный обьект, представляющий таблицу в базе данных. Так называемый entity.
    Вот как примерно он мог бы у вас выглядеть:
    @Entity
    @Table(name =  "person")
    public class Person implements Serializable{
    
        private static final long serialVersionUID = 1L;
    
    	@Id
    	@Column(name = "id", nullable = false)
    	private int id;
    	
    	@Column(name = "full_name")
    	private String fullName;
    	
    	@Column(name = "age")
    	private int age;
    	
    	@Column(name = "city")
    	private String city;
    	
    	@Column(name = "gender")
    	@Enumerated(EnumType.STRING)
    	private Gender gender;
    	
    	
    	public Person(){
    	}
    	
    	// геттеры и сеттеры обязательно
    }


    В общем почитайте матчасть немного.
    Ответ написан
    Комментировать
  • IText и Штрих-коды, как их разместить вдоль строки?

    timych
    @timych
    Располагайте их абсолютно на странице через цикл. В цикле накапливайте последние координаты картинки (Вы ведь как Image вставляете?). Дошли до края страницы - перемещайте новый ряд ниже.
    Вот туториал как позиционировать картинку.
    tutorials.jenkov.com/java-itext/image.html
    Ответ написан
    Комментировать
  • Как исправить ситуацию, когда GlassFish не обрабатывает JSF-страницы?

    timych
    @timych
    Я давно ковырялся с .jsf, но насколько помню если не сконфигурить маппинг к Faces Servlet в web.xml, то по дефолту для того чтобы faces заработал нужно в пути к jsp/xtml файлу вставлять "faces". Например localhost:8080/faces/mypage.jsp
    В противном случае faces не отрабатывает, хотя доступ с к файлу будет.
    Попробуйте.
    А еще лучше скиньте web.xml
    Ответ написан
    Комментировать
  • Какое железо для домашнего tomcat сервера выбрать?

    timych
    @timych
    У меня крутится Tomcat, Jetty и Apache одновременно на Pentium G630 , 4gb DDR3 ram, 128 gb SSD. Под Windows server 2012. Производительностью и потреблением электричества доволен.
    Правда приложения редко выполняют тяжелые операциии. И запросы только от меня.
    Ответ написан
    1 комментарий
  • Как реализовать таймер, работающий на массиве дат?

    timych
    @timych
    Вот наваял (надеюсь что правильно понял задачу):
    package application;
    
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;
    import java.util.Timer;
    import java.util.TimerTask;
    
    /**
     * @author Timur Nikiforov
     */
    public class Clazz {
    
    	private Timer dateTimer;
    
    	private Timer remainderTimer;
    
    	private Date nextDate;
    
    	private boolean remainderTimerStarted;
    	
    	private static final long REMINDER_UPDATE_INTERVAL = 1000; 
    
    	private static final String[] DATES = { "12.04.2015 19:56", "12.04.2015 19:57", "12.04.2015 19:58" };
    
    	private int currentIndex;
    
    	public Clazz() {
    		dateTimer = new Timer();
    	}
    
    	public static void main(String[] args) {
    		Clazz instance = new Clazz();
    		instance.run();
    	}
    
    	private void run() {
    		nextDate = parseDate(DATES[currentIndex]);
    		schedule();
    	}
    
    	public void schedule() {
    		runSecondsCounter();
    		dateTimer.schedule(new TimerTask() {
    
    			@Override
    			public void run() {
    
    				System.out.println("Current date is:" + new Date());
    				currentIndex++;
    				if (currentIndex < DATES.length) {
    					nextDate = parseDate(DATES[currentIndex]);
    					System.out.println("Next date is:" + nextDate);
    					schedule();
    				} else {
    					remainderTimer.cancel();
    				}
    			}
    		}, nextDate);
    
    	}
    
    	private Date parseDate(String nextDate) {
    		Date date = null;
    		DateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm",
    				Locale.ENGLISH);
    		try {
    			date = format.parse(nextDate);
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    		return date;
    	}
    
    	private void runSecondsCounter() {
    		if (remainderTimerStarted) {
    			remainderTimer.cancel();
    		}
    
    		remainderTimer = new Timer();
    		remainderTimer.scheduleAtFixedRate(new TimerTask() {
    
    			@Override
    			public void run() {
    				remainderTimerStarted = true;
    				long remains = nextDate.getTime() - new Date().getTime();
    				System.out.println("Remains: " + (remains / 1000) + " seconds");
    			}
    		}, REMINDER_UPDATE_INTERVAL, REMINDER_UPDATE_INTERVAL);
    	}
    }


    Разберетесь без комментов?
    Ответ написан
    1 комментарий
  • Как подключить локальный репозиторий maven?

    timych
    @timych
    Хм cама комманда выглядит правильно, по крайней мере у меня на виндовс-машинах все устанавливалось нормально. Проект билдится нормально? (Еклипс может тупить например до тех пор пока не сделаешь maven-> update project)

    PS: Почему вы не хотите положить jar в сам проект? Это гораздо удобней, в том плане что не нужно на каждой машине класть один и тот же jar в локальный репозиторий.

    UPD: В ответ на ваш коммент пишу тут, так как не вставить по человечески xml.

    По поводу добавления библиотеки прямо в проект:
    Делаете в корне проекта папку lib (или как вам угодно можно назвать) и кидаете туда jar. К примеру у меня в папке lib лежит библиотека GWT-jQuery. Тогда в pom.xml это будет выглядеть таким образом:
    <dependency>
        			<artifactId>GWT-jQuery</artifactId>
        <groupId>com.xedge.jquery.ui</groupId>
        			<scope>system</scope>
        <version>1.1</version>
        <systemPath>${basedir}/lib/gwt-jquery1.1.jar</systemPath>
    		</dependency>
    Ответ написан
    2 комментария