• Основные отличия Java IO и Java NIO

    Когда я начал изучать стандартный ввод/вывод в Java, то первое время был немного шокирован обилием интерфейсов и классов пакета java.io.*, дополненных еще и целым перечнем специфических исключений.

    Потратив изрядное количество часов на изучение и реализацию кучи разнообразных туториалов из Интернета, начал чувствовать себя уверенно и вздохнул с облегчением. Но в один прекрасный момент понял, что для меня все только начинается, так как существует еще и пакет java.nio.*, известный ещё под названием Java NIO или Java New IO. Вначале казалось, что это тоже самое, ну типа вид сбоку. Однако, как оказалось, есть существенные отличия, как в принципе работы, так и в решаемых с их помощью задачах.

    Разобраться во всем этом мне здорово помогла статья Джакоба Дженкова (Jakob Jenkov) – “Java NIO vs. IO”. Ниже она приводиться в адаптированном виде.

    Поспешу заметить, что статья не является руководством по использованию Java IO и Java NIO. Её цель – дать людям, начинающим изучать Java, возможность понять концептуальные отличия между двумя указанными инструментами организации ввода/вывода.
    Читать дальше →
  • Пришел, увидел, обобщил: погружаемся в Java Generics

      Java Generics — это одно из самых значительных изменений за всю историю языка Java. «Дженерики», доступные с Java 5, сделали использование Java Collection Framework проще, удобнее и безопаснее. Ошибки, связанные с некорректным использованием типов, теперь обнаруживаются на этапе компиляции. Да и сам язык Java стал еще безопаснее. Несмотря на кажущуюся простоту обобщенных типов, многие разработчики сталкиваются с трудностями при их использовании. В этом посте я расскажу об особенностях работы с Java Generics, чтобы этих трудностей у вас было поменьше. Пригодится, если вы не гуру в дженериках, и поможет избежать много трудностей при погружении в тему.


      Читать дальше →
    • Шпаргалка Java программиста 4. Java Stream API

      • Tutorial


      Несмотря на то, что Java 8 вышла уже достаточно давно, далеко не все программисты используют её новые возможности, кого-то останавливает то, что рабочие проекты слишком сложно перевести с Java 7 или даже Java 6, кого-то использование в своих проектах GWT, кто-то делает проекты под Android и не хочет или не может использовать сторонние библиотеки для реализации лямбд и Stream Api. Однако знание лямбд и Stream Api для программиста Java зачастую требуют на собеседованиях, ну и просто будет полезно при переходе на проект где используется Java 8. Я хотел бы предложить вам краткую шпаргалку по Stream Api с практическими примерами реализации различных задач с новым функциональным подходом. Знания лямбд и функционального программирования не потребуется (я постарался дать примеры так, чтобы все было понятно), уровень от самого базового знания Java и выше.

      Также, так как это шпаргалка, статья может использоваться, чтобы быстро вспомнить как работает та или иная особенность Java Stream Api. Краткое перечисление возможностей основных функций дано в начале статьи.

      Читать дальше →
    • Дуров объявил о введении инструментов по борьбе с цензурой в Telegram в Беларуси

        image

        Основатель Telegram Павел Дуров сообщил, что мессенджер активировал свои инструменты против цензуры в Беларуси на фоне протестов после президентских выборов. По его словам, это необходимо, чтобы сохранить доступ в Telegram для большинства пользователей.

        «Однако связь по-прежнему очень нестабильная, поскольку интернет иногда в стране полностью отключается», — написал Дуров в твиттере.
        Читать дальше →
      • Как прекратить страдать и начать учиться

          Успели во время самоизоляции стать суперэффективными и освоить пару новых специальностей? Тоже нет? А ведь все вокруг трубили: «Используй это время с пользой! Кризис – всегда точка роста». Оказывается, это совершенно нормально, если вы не нашли в себе сил начать осваивать новый язык программирования или вышивание гладью. Психологи говорят, что сильный и продолжительный стресс вредит обучению, а мы все это время прожили в условии постоянно меняющихся правил. Однако хватит «выученной беспомощности», впереди еще много перемен, и суперэффективность нам может пригодиться. 

          Я поговорила с преподавателями «Сетевой Академии» (кстати, нашему учебному центру 30 августа исполняется 25 лет!), чтобы узнать, что они думают про обучение дома, и собрала все мысли в этом посте: действительно ли это было время возможностей? Что поможет обучению, если всё вокруг мешает процессу? Чему и где учиться онлайн? Они дали свои рекомендации и рассказали о достойных образовательных платформах.

          Кстати, нашим преподавателям самим пришлось во время карантина срочно перестраивать учебный процесс, переформатируя его в онлайн. Так что они прекрасно знают, каково это – разрываться между работой, бытом, домочадцами и мониторингом новостей, при этом неотрывно следуя концепции непрерывного обучения.

          Читать дальше →
        • Рынок соискателя или работодателя VS возрастная дискриминация

            image


            В продолжение моего разбора полётов по рекрутингу и обстановке в последние лет 5, я хочу затронуть две щекотливые темы:

            • чей же рынок нынче, кто правит балом – работодатель или соискатель;
            • пресловутый возрастной ценз 45+, так ли всё плохо и безнадёжно.

            Собственно, про эти вещи и пойдёт дальнейший разговор. Устраивайтесь поудобнее, будет много инсайда.

            Две вышеуказанных темы очень близки друг другу и постоянно пересекаются в быту. Одно порождает другое.
            Читать дальше →
          • Почему большинство компаний в США никогда не станет бизнесом

              Если взять самый большой спектр всех доходных ниш в США, то обнаружится наличие явного ростового барьера. В грузоперевозках это 5-6 машин в компании, у стоматолога 4-5 клиента в день, в стройке 3-4 одновременных проекта и так далее.

              image

              Это особенно заметно в США, где финансовый и сервисный пирог достаточно равномерно размазан по территории и отраслям. Однако, из штата в штат количественный показатель не меняется.

              — Я собирал полные базы компаний по рынкам грузоперевозок и дентал клиник. И мои данные совпадают с данными статистики в целом.

              image

              Вот пример моей собранной статистики по
              Читать дальше →
            • Почтовый агент. Ловушка для жены эмигранта

                Я уже больше четырех лет живу с семьей в Германии. Сегодня расскажу про то, как жены эмигрантов попадают в неприятные ситуации, желая подзаработать, сидя дома. Речь, конечно же, не только о женах, в такие неприятности может попасть каждый. Но в основном в эту ситуацию попадают люди, далекие от сферы информационных технологий, те, кто приехал в страну недавно и плохо знают язык. Я расскажу конкретно про одну знакомую семью из Берлина, назову мужа Вадимом, а его жену Мариной.

                Как это было


                Однажды Марина, листая свою ленту во VK, увидела рекламу, что серьезной международной логистической компании требуются русскоговорящие представители в Германии. Опыт работы не требовался, знание иностранных языков тоже. Достаточно было иметь адрес постоянного проживания на территории Германии. Перейдя по ссылке в рекламе, она увидела объявление вроде такого:


                Читать дальше →
              • Разбираемся с hashCode() и equals()


                Я недавно начал заниматься программированием, и в этой области для меня много нового. Данная статья рассчитана на начинающих java-программистов, и, надеюсь, поможет в освоении излюбленной темы для собеседований “hashCode и equals”.
                Хочу сразу предостеречь, что я не являюсь экспертом в данной теме и могу что-то не так понимать, поэтому, если вы нашли ошибку или неточность — свяжитесь со мной.
                Читать дальше →
              • Как не надо писать факториал в Java

                • Translation
                Перевод этой статьи уже был однажды опубликован на хабре, но там почему-то осталась за кадром самая важная часть. Ниже — полный перевод.

                На написание этой статьи меня вдохновила заметка "Как бы вы написали факториал на Java?". Так что извините, я немного поразглагольствую в коде: у меня есть главная мысль, которую я выскажу в конце.

                Если вам надо написать факториал на Java, то большинство из ваc, вероятно, начнёт с чего-нибудь
                такого
              • Сайты для обучения программированию: Топ 100

                  В наш век современных технологий появилось много онлайн-ресурсов, которые позволяют всем желающим обрести необходимые им знания по программированию.

                  В конце данной статье будет опрос, в котором могут принять участие пользователи Хабра. По его результатам можно будет определить рейтинг популярности данных сайтов, опираясь на субъективное мнение каждого проголосовавшего.

                  Итак, сайты для обучения программированию онлайн, ТОП 100:
                  Читать дальше →
                • Собеседование наоборот: вопросы соискателя к компании

                    Всем привет! Хочу очередной раз поднять тему про найм. Только я собираюсь поговорить об этом с точки зрения кандидата, а не работодателя. Ведь собеседование, вопреки многим стереотипам, процесс двусторонний — вопросы может задавать не только интервьюер, но и сам соискатель. За прошлый год я провёл порядочное количество собеседований, и абсолютное большинство кандидатов огорчило меня отсутствием вопросов о компании, всего 5 человек стали меня расспрашивать о работе.

                    Я же считаю, что вопросы на собеседовании должен задавать и сам кандидат, ведь ему предстоит там работать. Из стандартного описания вакансии невозможно понять, что творится в компании, да и на собеседовании принято всё немного приукрашивать. Я думаю, что соискатель должен максимально использовать собеседование для того, чтобы выяснить реальное положение дел в компании. Мало кому захочется попасть в некомфортные условия или в убыточную компанию без перспектив. Если интересно, как во время собеседования получить реальное представление о компании, то добро пожаловать под кат. Я дам список вопросов, которые обычно не ждут интервьюеры, возможно кому-то они помогут принять правильное решение при поиске работы.

                    image
                    Читать дальше →
                  • Как на интервью распознать начальника — самодура?



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

                      После начала работы в какой — либо организации вам хватит недели чтобы понять, насколько комфортно вам там работать, насколько дружелюбны коллеги и адекватен ли Ваш начальник. К сожалению, если все плохо, то ситуацию можно решить только увольнением. Процесс неприятный, иногда болезненный. Кроме того, стаж работы в неделю или две вызывает вопросы у будущих работодателей.

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

                      За много лет я убедился, что любая организация является отражением ее руководителя: его увлеченности или апатии, жизнелюбия или пессимизма, позитива или злобы. Поэтому очень важно уметь определить начальника – мудака еще на этапе интервью и отказаться от работы с ним.
                      Читать дальше →
                    • Как я использую AirDrop вместо Тиндера



                        В устройствах Apple есть прекрасная функция Airdrop — она сделана для пересылки данных между устройствами. При этом никакой настройки и предварительного сопряжения устройств не требуется, все работает из коробки в два клика. Для передачи данных используется надстройка над Wi-Fi, и поэтому данные передаются с огромными скоростями. При этом используя некоторые трюки, можно не просто пересылать файлы, но и узнать телефонный номер человека, находящегося с тобой в одном вагоне метро.

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

                        Под катом я расскажу за всю хурму.
                        Читать дальше →
                      • Как научиться программировать на Java: почему стоит и где начать

                        • Translation
                        • Tutorial
                        image

                        Определитесь со своими карьерными целями и выберите язык. Это пожалуй самый важный совет для тех, кто не имеет опыта программирования и стремится присоединиться к сообществу разработчиков. Но как сделать выбор, не зная, какой язык больше всего подходит для ваших целей?

                        Было бы проще, если бы среди всех языков программирования был «лидер рынка»? И тогда у всех новичков всегда будет безопасный выбор — выучите этот язык, и вы наверняка будете востребованы. Но это конечно же невозможно. Языки являются «инструментами» для решения многочисленных задач. Один из языков, к которому стоит присмотреться, является Java.

                        Java — это хорошо структурированный, объектно-ориентированный язык, который может показаться простым для начинающих. Вы можете справиться с ним довольно быстро, так как много различных процессов запускаются автоматически. В первое время не потребуется углубляться глубоко в «как там все работает». Java является кроссплатформенным языком. Это позволяет программисту создать приложение, которое можно развернуть на любом устройстве. Это предпочтительный язык для IoT(интернет вещей), отличный инструмент для создания enterprise приложений, мобильных приложений и т.д.

                        Что важно для новичка, у Java есть одно из крупнейших сообществ и очень качественная документация. Если у вас есть проблема, с высокой вероятностью ответ есть уже в документации. Еще два преимущества Java — это обширные библиотеки и фреймворки, которые покрывают большинство проблем, с которыми вам придется столкнуться как младшему разработчику.
                        Читать дальше →
                      • Я мечтал вырваться из Узбекистана и стать крутым разрабом. Больше не хочу — но разработка не отпускает



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

                          На меня никогда не давили с учебой. Говорили, отучись и иди работай, не важно кем, главное без дела не сиди. Я не сидел — я рубил в игры, прям дико, даже операцию на глаз пришлось делать. Начал зависать в прокуренных клубах, и одобрение пацанов поднял тем, что хорошо играл в варчик. Потом стал деградировать на районе. Среди друзей никогда не было ни одного разработчика — но это мне в них скорее нравится. Никаких клубов по интересам, даже рэпером никто не хотел стать — просто обычные ребята.
                          Читать дальше →
                        • Как я на карантине работу искал

                            Хочу поделиться с сообществом своим недавним опытом поиска работы, сообщить, так сказать, вести с передовой. Несмотря на то, что все написанное – абсолютно субъективно, заметка будет полезна для других IT-шников. Особенно – если они интроверты и редко ходят по собеседованиям.

                            А еще, полагаю, многим будет любопытно, какая метаморфоза произошла с рынком работы в связи с последними событиями.


                            Читать дальше →
                          • Simula — 50 лет ООП

                            • Tutorial
                            Статья представляет собой очень краткое введение в Simula.

                            Simula ((SIMIUlation LAnguage) ), первый язык программирования с классами и объектами, незаслуженно почти забытый, но из которого выросло современное ООП в том виде, в котором оно присутствует в нашем коде. Это язык для имитационного моделирования реальности. Разработчики новых языков программирования «оглядывались» на Simula при добавлении механизмов объектно-ориентированного программирования в свой язык. Однако Simula упоминается настолько редко, что в русской википедии на момент публикации был только хеллоуворд, а в сети куча устаревших ссылок.



                            Бьерн Страуструп, говоря о причинах создания C++, сказал так: «Этот язык возник потому, что автору потребовалось написать программы моделирования, управляемые прерываниями. Язык SIMULA-67 идеально подходит для этого, если не учитывать эффективность.»
                            Читать дальше →
                          • Я выпустил текстовый процессор, форматировавший жёсткий диск после каждого 1024-го сохранения

                            • Translation
                            Рассказывать начинающим инженерам истории о том, как ты когда-то серьёзно облажался – это хороший способ помочь им бороться с синдромом самозванца.

                            Это был, наверное, 1984-1985 год. Тогда я был 25-летним подающим надежды программистом с пятилетним стажем. Я и ещё один программист писали и поддерживали набор приложений, похожих на сегодняшний Office: электронные таблицы, текстовый процессор, база данных, плоттер и т.п. Мы настраивали всю эту систему для трёх-четырёх вертикальных рынков [бизнес-клиентов узкоспециальной направленности / прим. перев.].

                            Большую часть текстового процессора писал я сам. Писал я на Форте, и для различных вариантов комбинаций операционок и процессоров. Молодёжи невдомёк, но в те времена новые микрокомпьютеры со своей особой ОС и одним из нескольких вариантов процессоров выходили раз в несколько месяцев.

                            Форт использовал обмен блочными данными с диском. Каждый блок имел длину в 1 кб, и чтобы сохранить что-нибудь больше 1 кб, нужно было работать с мастер-блоком файла, где хранились смещения всех блоков с данными – по сути, это была пара списков, занятых и незанятых блоков.
                            Читать дальше →
                          • Мне надоело, что обычные продавцы выдают себя за разработчиков и позорят индустрию. Они делают мир хуже



                              Когда Дудь выпустил ролик про долину, я очень сильно расстроился. Я ещё не знал, про что он конкретно, но мозг моментально нарисовал: манерные успешные успехи говорят про преодолевание, дух предпринимательства, поднятые миллионы баксов, и как сильно их говноприложенька влияет на мир.

                              Тогда я подумал — надо посмотреть, осудить и бахнуть статью. Про то, что Дудь засранец, а в настоящей разработке все по-другому. Прошло уже месяца два, но я так и не смог заставить себя это посмотреть.

                              Мои новостные ленты были завалены обсуждениями, восхищением и критикой выпуска. Каждый раз читая что-то об этом, я испытывал непонятную почти физическую боль. Ну хорошо, главный журналист страны рассказал про мою индустрию, но рассказал не так, как хочу я. С этим можно жить. Да, со всей своей преисполненностью и трушной технарскостью, я все ещё маленький завистливый чмошник. Я тоже хочу сидеть в кофейне в Пало-Альто и смотреть, как мне выписывают чек на пять миллионов долларов. Но смотрите, я вырос в России и давно научился не обращать внимания на свою патологическую зависть. Мне давно не бывает от нее больно.

                              Бомбанул я точно не от зависти — и я долго не знал, почему.
                              Читать дальше →