• Стоит ли начать изучение java с книги "Изучаем Java" Кэти Сиерра?

    Ewintory
    @Ewintory
    Java / Android developer
    Начните с Head First Java, очень желательно на англ. Сам с нее начинал. Повествование в ней может показаться черезчур разжеванным, но от этого она хуже не стала.
    Ответ написан
    Комментировать
  • Какой способ получения опыта более правильный?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В вашем вопросе отсутствует смысл. И тот и другой способ - практические, а значит оба приносят опыт. Остальное зависит от вашего восприятия. Кому-то проще ковыряться в чужом коде, кому-то интереснее в документации.

    Более правильный способ - совмещать и пробовать все.
    Ответ написан
    Комментировать
  • Как оптимально найти первое вхождение подстроки до любого символа, который не буква?

    27cm
    @27cm
    TODO: Написать статус
    То есть, найти первое вхождение подстроки до символа-не буквы?

    Задачу в такой постановке можно переформулировать:
    Выбрать все символы-буквы в начале строки.

    $str = 'Синее. Море';
    if (preg_match('/^\w+/u', $str, $match)) {
        echo $match[0];
    }
    Ответ написан
    4 комментария
  • Как реализовать в Java возврат к началу класса?

    EugeneP2
    @EugeneP2
    Java Dev
    Как то так обычно это делается
    package ru.toster.java.q241826;
    
    import java.util.Date;
    import java.util.Scanner;
    
    public class App {
    
    	public static void main(String[] args) {
    
    		Scanner scnr = new Scanner(System.in);
    
    		while (true) {
    
    			System.out.print("enter command>");
    			String command = scnr.nextLine();
    
    			if ("help".equals(command)) {
    				printListCommand();
    			} else if ("date".equals(command)) {
    				printDate();
    			} else if ("time".equals(command)) {
    				printTime();
    			} else if ("exit".equals(command)) {
    				System.out.println("Good Bye!");
    				break;
    			} else {
    				System.out.println("Unknown command! Please enter 'help'");
    			}
    
    		}		
    		scnr.close();
    	}
    	
    	private static void printTime() {
    		System.out.printf("%1tT\n", new Date());		
    	}
    
    	private static void printDate() {
    		System.out.printf("%1tY-%1$tm-%1$td\n", new Date());		
    	}
    
    	private static void printListCommand() {
    		System.out.println(
    				"'help'\tprint list commands;\n" + 
    				"'exit'\texit from programm;\n" + 
    				"'date'\tprint today's date;\n" + 
    				"'time'\tprint current time;");
    	}
    }
    Ответ написан
    3 комментария
  • Почему не все серверы пишутся на Node js?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1. Принципиальных качественных преимуществ у node.js перед остальными языками нет, как впрочем и недостатков. Просто yet another язык со своими особенностями. Соответственно если в вопросе заменить node.js на php/ruby/python итд - ничего не изменится.
    Вопрос по сути абстрактный "почему все не перешли на язык %%%%%"

    2. Ответ на абстрактный вопрос:
    а) Потому что существует огромное количество legacy кода который нужно поддерживать. Работы по поддержке и развитию существующего кода на порядок больше чем написания с нуля нового
    б) Потому что у разработчиков есть свой стек любимых технологий, изменять который без явных экономических причин основная масса не готова
    в) Потому что умные технические менеджеры выбирают стек технологий проекта исходя из имеющихся под рукой разработчиков и легкости поиска и заменимости оных.

    UPD
    hbrmdc
    У NodeJS есть уникальные и очень весомые преимущества, которых нет ни у одного другого языка. Например то, что это JS, и, следовательно, нет необходимости разучивать лишние языки - можно весь webapp писать на js.
    Личные предпочтения обоснованные привычками - это не имеющий значения аргумент в данном вопросе.

    1) Есть отличия, да. Только не те о которых Вы пишите. То что это "JS" вообще ни на что не влияет.
    JS хорошо знают фронтендщики - а кто пустит фронтэндщика к внутренней архитектуре? Там подход совершенно другой нужен, другие навыки, другое понимание как это все работает. Просто пересадить человека с фронта на бек - нельзя.

    На самом деле основные отличия другие:
    Постоянно живущий процесс, фактическая однопоточность. В зависимости от задачи - это может быть и плюсом и минусом. Условно для какого нибудь сокет-сервера - плюс (активно используем на живых проектах). Для middleware - я бы подумал. Для нагруженного сервиса с расчетами - точно нет.

    2) Личные предпочтения обоснованные привычками это основной аргумент.
    Я вот умею в php, умею в ноду, умею в еще десяток умных слов.
    Мне нужна новая команда на новый проект.
    Я открываю hh и что я вижу: node.js 279 резюме из которых половина фронтэндщики.
    PHP - 9613 резюме. Даже если 90% разработчиков PHP на hh - уроды которых к коду нельзя подпускать на пушечный выстрел - останется все равно в 3 раза больше чем есть node.js.
    Собственно на этом выбор и закончен.

    На малопопулярных языках пишут в случаях:
    a) это мелкий сервис с неявными перспективами который можно переписать за неделю
    б) это проект "для души" разработчика.

    Получается замкнутый круг на самом деле.
    Менеджер смотрит резюме, резюме на node.js нет =>
    Менеджер не начнет проект на node.js =>
    Не возникнет вакансия на node.js =>
    Разработчик анализируя вакансии не увидит вакансий на node.js =>
    Разработчик будет учить что то другое =>
    Менеджер смотрит резюме, резюме на node.js нет...

    Переломить ситуацию могут только очень крупные игроки обладающие возможностями формирования рынка (например Apple и Swift), и то не со 100% гарантией (samsung&c и Tizen)
    Ответ написан
    13 комментариев
  • Проблема с пониманием алгоритма нахождения простых чисел?

    @Alexander1705
    1. Что-то вроде доказательства от обратного: сначала предполагаем, что число простое isPrime = true; А если находится число, деление на которое происходит нацело, то есть остаток от деления равен нулю if((i%j) == 0), тогда доказано обратное, данное число составное: isPrime = false;

    2. Для того, чтоб не делать лишних итераций, если есть число N, то достаточно проверить только его делители от 2 до √N.

    P.S. Если, поставить i < 100, то в проверку пойдёт и само число, а так как число нацело делится само на себя, остаток будет 0 и условие сработает неправильно. Внутренний цикл перебирает делители числа, а для числа N, они находятся в диапазоне [1, N], однако так как и простые числа делятся на 1 и на самих себя, проверять нужно только диапазон (1, N).
    Все делители больше чем √N дают в результате деления целые числа меньше чем √N, а так как меньшие числа мы уже перебрали, в проверке бо ́льших нет смысла. Условие j<(i/j) как раз обеспечит перебор целых чисел в диапазоне [2, √N].

    Можно также добавить небольшую оптимизацию:
    for (j=2; j<(i/j); j++) {
            if((i%j) == 0) {
                    isPrime = false;
                    break;
            }
          }

    Если нашли один делитель, этого достаточно. Перебирать остальные не обязательно.
    Ответ написан
    3 комментария
  • Актуальны ли Java аплеты сегодня?

    opium
    @opium
    Просто люблю качественно работать
    Умерли давно, я уже не помню когда я в последний раз видел джава апплет.
    Ответ написан
    Комментировать
  • Актуальны ли Java аплеты сегодня?

    @onepavel
    Консультация и разработка мобильных приложений
    нет, не актуальны
    Ответ написан
    Комментировать
  • Для каких задач используется Haskell?

    MegaMufa
    @MegaMufa
    1. см пункт 3
    2. Мое личное мнение - все равно с какого языка начинать. Но я бы на вашем месте начинал с чего-нибудь другого. Haskell не сильно востребован на рынке и работу будет найти сложно, а зарабатывать надо. Поэтому лучше начните с мейнстрима, а потом учите Haskell.
    3. Практически что угодно можно на нем писать. Чистые функции очень хорошо параллелятся. Из самого известного на мой взгляд xmonad - тайловый оконный менеджер для linux.
    4. www.ozon.ru/context/detail/id/8696277 - прекрассная книга. Интересно и все по полочкам. Сам по ней учил.
    ohaskell.dshevchenko.biz/ru/chapters.html - тоже хороший учебник, но здесь построение материала другое.
    5. Если ваша цель - найти работу, то, думаю, нет. ВАкансии существую, но их очень мало. Если вы хотите изучить другую парадигму программирования, то однозначно стоит. Так же Haskell очень красивый язык. Мне он нравится в первую очередь из-за синтаксиса. Ну и это чистый функциональный язык. Кто знает Haskell - тот знает ФП.

    Вот интересный пост на хабре от менеджера команды, которая использовала Haskell в продакшене. habrahabr.ru/post/193722 Как всегда в комментах очень много интересного.
    Ответ написан
    4 комментария
  • Какая разница между C, C#, C++?

    @dmitryKovalskiy
    программист средней руки
    Разница в количестве плюсиков. У первого -0 , у второго - 4, у третьего - 2. Новичку лучше учить C++. А если серьезно : С- язык низкого уровня для системного программирования, драйверов и другой низкоуровневой разработки. С++ - тоже самое с обвесами из классов, перегрузок, шаблонами и некоторыми другими фичами. С# - ООП язык для разработки под .NET - Microsoft-стек технологий для разработки самых разных приложений.
    Ответ написан
    Комментировать
  • Насколько весомым является влияние знания регулярных выражений на трудоустройство PHP developer?

    Denormalization
    @Denormalization
    junior:
    /(.*)/
    middle:
    /[^a-c]+([y-z]+?)/
    senior:
    (?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*))*)?;\s*)
    Ответ написан
    5 комментариев
  • Как быть в тренде новых технологий?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    А зачем гнаться за трендами?
    Увидело что-то новое в JS, пришли домой, под пивко покодили, посмотрели и не более того ибо далеко не факт что клиент когда либо захочет такую фишку у себя на сайте а тратить время на освоение "новой мега рюшки" сильно расточительно.

    Это маркетологам принято гонятся за трендами, в разработке всё-же консерватизм дело не не плохое.

    Вон простой пример - "Селфи палка", многие себе накупили, магазины ими затарились, а народ месячишку побесился и забил. Магазины теперь не знают куда их девать. Так и с сайтами, прикрутишь мего клёвые часики а через месяц придётся откручивать назад - за свой счёт :)
    Ответ написан
    7 комментариев
  • Как получить нормальный терминал в Linux Mint?

    Denormalization
    @Denormalization
    Такое обычно когда вместо нормального шелла стоит какой-нибудь sh (а судя по тому, что в консоли только '$' - так и есть).

    1) Сделать cat /etc/shells посмотреть какие шеллы есть
    2) Через chsh или usermod сменить шелл на нужный (bash например).
    3) Поставить zsh и сделать его дефолтовым.
    Ответ написан
    1 комментарий
  • Наиболее полный курс по java core. Головач, Хорстман, либо что-то другое?

    Sanan07
    @Sanan07
    Писатель-прозаик
    Первый том Хорстмана будет достаточен.
    Ответ написан
    4 комментария
  • Поможете с простым регулярным выражением?

    @matperez
    А строки все одинаковые? Тогда вам и регулярка не нужна.
    console.log('nenuzno_nuzno'.split('_')[1]);
    Ответ написан
    3 комментария
  • Как перебрать строковой массив?

    @onepavel
    Консультация и разработка мобильных приложений
    String[] cheats = {"de.Kradxn.Xray", "Sunstrike"};	
    Package Check = Package.getPackage(null);
    for (String item: cheats)
        if (Check != null && Check.equals(item)) {
            System.exit(0);
        }
    }
    Ответ написан
    Комментировать
  • Насколько актуальны эти книги по Scala?

    udav_pit
    @udav_pit
    Senior Java/Scala Engineer | Backend development
    Доброго дня, вот маст хэв книги по scala:
    1) Martin Odersky, Lex Spoon, and Bill Venners - Programming in Scala, Second Edition
    2) Joshua D. Suereth - Scala in Depth
    Ответ написан
    1 комментарий
  • Какая разница между этими способами ввода?

    EugeneP2
    @EugeneP2
    Java Dev
    Вместе с JDK можно скачать и исходный код стандартных библиотек джавы. В любой IDE, зажав CTRL и кликнув по имени того, или иного класса, можно перейти к его исходному коду и полюбопытствовать, что же там такое происходить...

    В вашем примере мы видим два конструктора, один принимает символьный поток (Reader), а другой - байтовый поток ("сырые" данные) (InputStream).

    Scanner предназначен для удобного чтения текста из потока, т.е. ему нужен символьный поток (Reader). А что он делает с байтовым поток? - правильно, оборачивает его в Reader:) И если зайти в код конструктора, то мы это увидем:
    public Scanner(InputStream source) {
            this(new InputStreamReader(source), WHITESPACE_PATTERN);
        }

    Все просто, в зависимости от доступного вам потока (Reader/InputStream), вы используете соответствующий конструктор Scanner-а. В вашем примере оба варианта делают одно и тоже.

    Библиотека java.io состоит из декораторов (паттерн такой), они как матрешки, вкладывая их один в другой, вы добавляете функционал.

    Байтовы поток, а нужен символьный? - пффф... обвернули его InputStreamReader. Нужна буферизация? - легко, Обвернули в BufferedReader.
    Ответ написан
    1 комментарий
  • Как создать сайт на javaEE?

    EugeneP2
    @EugeneP2
    Java Dev
    Для начала разберитесь с Servlet API, поставьте Tomcat, напишите сервлет. Потом JSP + JSTL
    Ответ написан
    1 комментарий
  • Что нужно знать и умень что бы быть зеленым сисадмином?

    Begmak
    @Begmak
    Продвинутый эникей
    На хабре была серия статей по этому поводу. Хотя там и не только про начало,но советую полностью ознакомиться с ними, так вы поймете что вас ждет.

    Первая часть тут
    Ответ написан
    Комментировать