• Как перебрать строковой массив?

    @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);
        }
    }
    Ответ написан
    Комментировать
  • Как при запросе к двум таблицам назначить для каждой свой WHERE?

    @dmitryKovalskiy
    программист средней руки
    Советую вам не писать запрос в 2 таблицы через запятую. При этом делается хз какой Join и читабельность падает до нуля. Рекомендую переписать явным Join'ом с явным указанием по каким полям и условиям. А внутри Where уже писать все необходимые вам условия
    Ответ написан
    4 комментария
  • Какая разница между этими способами ввода?

    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 комментарий
  • Насколько нужно знать java для Spring Framework? И зачем нужна java EE?

    EugeneP2
    @EugeneP2
    Java Dev
    Нужно знать Java SE + Servlet API (это уже из Java EE).

    Spring дает все те же возможности (IoC и DI, транзакции и.д.) что и Java ЕЕ, только проще в использовании и не нужен сервер приложение (jboss, glassfish), достаточно tomcat или jetty.

    Java EE это набор спецификаций и интерфейсов, который реализуют производители серверов приложений (jboss, glassfish). Spring - как простая альтернатива.
    Ответ написан
    2 комментария
  • Почему игнорируется переменная CLASSPATH после создании пакета в Java программе?

    @protven
    Потому что класс C1 должен лежать в директории P1 и компилировать его надо
    javac P1/C1.java

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

    platotel
    @platotel
    IT Product Manager
    Посоветовала бы Head First Java. Java - широко используемый язык. Не самый модный, но с модных начинать не стоит, потому что может быть сложно переучиваться. На примере Java как раз можно изучить основные понятия программирования - операторы, функции, ООП и т. д., - а после Java уже можно посмотреть Python, JS и ещё что-нибудь. Зная более основательный язык, будет проще переключиться на языки, в которых что-то из Java не используется. А вот наоборот двигаться, на мой взгляд, сложнее и менее продуктивно.
    Если не понравится Java, можно ещё посмотреть С# ("C Sharp"). Эти два языка я бы назвала классическими. Зная любой из них, можно быть востребованным.
    С С++ или чистого С может быть сложнее начинать. Чтоб с ними работать, нужно лучше понимать, как происходит работа программ. Но если интересно и в сторону железа смотреть, то можно и с них попробовать начать. Параллельно изучая Таненбаума и Паттерсона или что-то вроде того. Если математика нравится, то как раз можно больше уйти в С и хардкорное программирование чего-то сложного.
    Кстати, зная Java, можно стать разработчиком программ под Android. И ещё после Java есть больше возможностей работать в веб-проектах, заниматься бекэндом (то есть той логикой сайтов, что скрыта за их красивым видом).
    А я сама начинала с книги Шилдта. Можно и с неё начать. Мне понравилось, что всё постепенно рассказывается. Хотя в книгах серии Head First (по С#, по С) подробностей для новичка больше.
    И ещё добавлю, что по ходу чтения здорово практиковаться, то есть писать программы. Собственно создание программ происходит обычно с средах разработки. Полезно их установить и начинать программировать именно в них, потому как они во многом упрощают разработку, помогают быстрее понять, что к чему. Заодно и их изучите (их знание часто требуется на работе). Для всех С-языков стандартом является среда разработки Visual Studio, для Java я бы посоветовала IntelliJ IDEA.
    И, кстати, рекомендую подкаст The art of programming. Правда, подкаст-терминал, где были выпуски, прикрыли, но советую поискать недавние выпуски подкастов замечательного человека с ником golodnyj. Благодаря ему я и начала двигаться в сторону программирования. :) А, и ещё один подкаст посоветую: Откровенно про IT-карьеризм.
    Ответ написан
    1 комментарий
  • Почему полиморфизм так работает?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Объяснить суть полиморфизма "на пальцах" довольно просто. Представьте себе класс Телефон. Его спроектировал некто в далеких 80-х, и определил в нем метод набратьНомер(). А потом другой программист в 90-х отнаследовал от него класс МобильныйТелефон и перекрыл метод набратьНомер(), т.к. грубо говоря, в новом устройстве набор производится уже не импульсно, а тонально. А потом третий программист отнаследовал от него класс Смартфон. При этом он не стал трогать метод набратьНомер(), а просто добавил методы для нового функционала, типа определитьПоложениеПоGPS() и т.д.

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

    А теперь представьте другого пользователя, нашего современника. Он вырос в эпоху смартфонов... но если ему в руки дать старый телефонный аппарат, он тоже сможет сделать звонок, т.к., опять же, знает метод набратьНомер().

    Применительно к ООП, пользователь - это переменная, содержащая ссылку на экземпляр класса. Ее тип (как она была объявлена) - это "набор знаний" о возможностях этого экземпляра. И т.к. Смартфон в своей основе является Телефон-ом, мы вполне можем дать его в руки гипотетическому пользователю из 80-х:
    Телефон устройство = new Смартфон();
    в результате чего он сможет сделать звонок:
    устройство.набратьНомер("03");
    А вот определить свое местоположение он не сможет, пока не узнает о существовании соотв. метода:
    Смартфон усовершенствованноеУстройство = (Смартфон)устройство;

    Это называется приведением типа. В данном примере у экземпляра класса уже был соотв. метод, но чтоб им воспользоваться, нужно сначала явно указать, что мы хотим рассматривать имеющееся у нас в руках устройство не как "простой" Телефон, а как Смартфон.

    P.S. Кстати, в этом примере мы затронули не только полиморфизм, но и наследование, и инкапсуляцию (пользователя "снаружи" совершенно не интересует, как именно производится набор номера - тонально, импульсно или еще как-то иначе)... так сказать, все три кита ООП в одном флаконе. И только так вообще имеет смысл рассматривать эти принципы, т.к. они по сути неотделимы друг от друга, как Отец, Сын и Святой Дух в Христианстве или же длина, ширина и высота в трехмерном пространстве :) Если это понять, ООП становится совершенно простой и естественной парадигмой программирования.
    Ответ написан
    8 комментариев
  • Какой выбрать курс английского?

    Ranwise
    @Ranwise
    посмотрите duolingo, тут тренируются слова и часто употребляемые фразы

    просто учить слова нет смысла как lingualeo, хотя там и есть видео и тексты
    Ответ написан
    3 комментария
  • Обучающая литература. Какие книги помогут новичку?

    @FloorZ
    Определись с языком, с которого начнешь.
    Если С++ - учебник "Прата С. - Язык программирования С++. Лекции и упражнения - 2011".
    Ответ написан
    Комментировать
  • Обучающая литература. Какие книги помогут новичку?

    TwerTrue
    @TwerTrue
    Молодой и неопытный разработчик
    Для начала я бы вам советовал книгу "Изучение Java" там есть и практические задания, книга не заставит вас скучать, потом можно взять что то более серьёзное, например Герберт Шилдт Java 8 (Издание для новичков), я не советую начинать читать сразу эту книгу если у вас нет основ, в добавок могу предложить почитать книгу "Структуры данных и алгоритмы в Java" (Лучше читать как дополнение), написанно понятно и для новичков тоже подойдёт.
    Ответ написан
    Комментировать
  • Тригонометрическая регрессия?

    @Mercury13
    Программист на «си с крестами» и не только
    Совершенно верно. Вообще регрессия методом наименьших квадратов крайне легко выводится для любой формулы вида

    y = A1·f1(x) + A2·f2(x) + … + Am·fm(x)

    при условии, что заданы m пар (x1, y1) ... (xm, ym). Неизвестные — A1…Am.

    Чуть посложнее, надо вспоминать теорию матриц — для N > m пар.
    Ответ написан
    5 комментариев
  • Как перевести двумерный массив в одномерный JAVA?

    fornit1917
    @fornit1917
    псевдокод
    for (i=0; i<4; i++) {
      for(j=0; j<4; j++) {
        arr[i*4+j] = matr[i][j]
      }
    }
    Ответ написан
    1 комментарий
  • Работа без высшего образования, это реально?

    @FoxInSox
    Почему вы все так спешите начать работать? Да еще и вместо обучения (каким бы оно ни было).

    - У вас еще впереди лет 30-40 работы, большую часть жизни вам придется работать. Вероятность того, что вы все эти 30 лет будете работать в удовольствие далеко не 100%.
    - Начиная работать на 2-3 года раньше вам не дает сильных преимуществ в перспективе. В практически любой работе гораздо более важна эффективность, а не просто сколько времени вы проработали на определенной должности. Т.е. проработав, например, 5 лет, всегда найдутся люди с меньшим опытом которую делают вашу работу эффективнее (быстрее, качественнее)
    - годы обучения в ВУЗе для очень многих людей являются самыми счастливыми, а во многих случаях даже формируют фундамент всей оставшейся жизни: друзья, хобби, знакомства, связи, какие-то ключевые события. Сидя 8 часов в офисе в день на работе или в квартире на фрилансе вы все это упустите скорей всего.
    - во время учебы у вас есть масса времени попробовать поработать в разных местах и сферах: backend, frontend, мобильная разработка, дизайн, попробовать заняться научной деятельностью, попробовать что либо вообще не связанное с IT. После нескольких лет работы вы только будете мечтать о таком, но времени и возможности сменить радикально сферу работы вы не сможете просто.

    ps ну нахрена вам деньги в 17 лет? Машину купить? Бабу свою свозить в Европу? iMac за 100 тысяч купить? Это все вещи которые не стоят вашего времени как минимум 17 лет точно.
    Ответ написан
    6 комментариев
  • Вопрос о высшем образовании. Что думаете?

    Bandicoot
    @Bandicoot
    Вась-программист
    Разумеется очное обучение. Заочное - деньги и время на ветер. Первый вариант
    Ответ написан
    2 комментария
  • Какие вы знаете каналы на youtube, куда выкладываются видео, где нонстоп пишутся серьезные приложения?

    newross
    @newross
    Product owner
    Никто в здравом уме не будет стримить разработку серьезных корпоративных приложений. Более того, никто в здравом уме это смотреть не будет - жуткая скукота же :)
    Ответ написан
    Комментировать
  • Как сгладить график?

    @Moxa
    постройте сплайн, будет все гладенько)
    Ответ написан
    7 комментариев
  • 5 часов в день для обучения программированию норма?

    @kstyle
    Сравните с едой. Голодание и обжорство - две крайности. В первом случае не хватает для полноценной работы всего организма, во втором случае - пища просто не усваивается и порождает болезни (так что забудьте коммент про обучение 24 часа в сутки). А вот норма у каждого своя. Зависит от способностей, интенсивности, физического состояния, стиля обучения, температуры в комнате и т.д. Подберите экспериментально - учитесь с момента, когда у вас спокойное, немного бодрое настроение до момента, когда уже появилась небольшая усталость. Добавляйте перерывы. Со временем время увеличивайте немного. Только такой анализ (а не тостер) даст точный ответ.
    Ответ написан
    Комментировать