Как стать автором
Обновить
170
0

Пользователь

Отправить сообщение

Всё про USB-C: резисторы и E-Marker

Уровень сложности Сложный
Время на прочтение 7 мин
Количество просмотров 20K

Если вы следите за нашей сагой про USB-C, то уже знаете, что жила CC в этих кабелях используется для коммуникации и определения полярности. Однако есть и один малоизвестный факт, а именно то, что в USB-C коммуникация реализуется через два протокола – аналоговый и цифровой. Сегодня мы разберём аналоговую передачу, получше уяснив роль и принцип работы пресловутых резисторов 5,1 кОм. Помимо этого, мы познакомимся с микросхемами E-Marker и таинственным VCONN.
Читать дальше →
Всего голосов 62: ↑62 и ↓0 +62
Комментарии 12

Stack-based calculator on the Cyclone IV FPGA board

Время на прочтение 12 мин
Количество просмотров 9.7K

Introduction


As first-year students of Innopolis University, we had an opportunity to make our own project in computer architecture. University suggested us several projects and we have chosen to make a stack-based calculator with reverse polish notation. One of the requirements for the project is to use FPGA board provided by the university.



As our board, we have chosen Cyclon IV. Therefore, we had to write code on hardware description language. In the course we have studied Verilog, so we have chosen it. Also, the university has additional modules for FPGA, such as numpad, thus we decided to use it in our project.

In this article, we want to share our knowledge about FPGA and Verilog, also provide you with a tutorial to repeat our project.
Read more →
Всего голосов 75: ↑58 и ↓17 +41
Комментарии 27

Обучаемый Telegram чат-бот с ИИ в 30 строчек кода на Python

Время на прочтение 6 мин
Количество просмотров 339K
image

Сегодня мне в голову пришла мысль: «А почему бы не написать Telegram чат-бота с ИИ, которого потом можно будет обучать?»

Читать дальше →
Всего голосов 82: ↑68 и ↓14 +54
Комментарии 106

Платформа для «Интернета вещей»: чипы TI CC1310, CC2630 и CC2650

Время на прочтение 8 мин
Количество просмотров 27K

Привет, GT.


Несколько месяцев назад мы уже писали про то, какие протоколы связи используются (и не используются) в «Интернете вещей». Если говорить коротко, то вообще вся тема IoT в базисе сводится к предоставлению канала связи устройствам, у которых канала связи раньше не было — и чтобы это получило смысл, средства обеспечения такой связи должны быть:


  1. Компактными — чтобы не увеличивать размеры устройств
  2. Экономичными — чтобы долго работать даже на батарейках
  3. Дешёвыми — чтобы их использование имело какой-то экономический смысл

К всеобщему счастью, сейчас таких средств появилось достаточно много — начиная с в той или иной степени удачных попыток адаптации старого доброго Wi-Fi к этим требованиям (я сейчас в большей степени про устройства класса battery-powered Wi-Fi, от ESP8266 до QCA 4004 и TI CC3200) и заканчивая специализированными протоколами, изначально сделанными под данные требования: в первую очередь ZigBee, Z-Wave и 6LoWPAN.


Наиболее гибким, удобным и перспективным из этого является 6LoWPAN (а если вы слышали произносимое с придыханием слово «Thread», то он собственно поверх 6LoWPAN и работает) — и, собственно, мы как раз и занимаемся разработкой модулей и устройств с использованием 6LoWPAN.


Но сетевые протоколы — это, очевидно, лишь половина беды. Вторая половина — «железо», на котором они будут работать.



Модули 868 МГц нашей разработки на TI CC1310


В последнее время возникла мода клеить этикетку «IoT» буквально на всё, что хоть как-то умеет работать с «беспроводкой» — начиная с Arduino с нацепленными BLE- или Wi-Fi-шилдом и заканчивая всевозможными морально устаревшими чипами, к которым десять лет назад выпустили «официальный» стек ZigBee. У человека, который впервые в это погружается, голова закружится достаточно быстро и с неприятно большой скоростью.


Мы в своей работе однозначно определились с выбором платформы на обозримое будущее — это последнее поколение SoC Texas Instruments серии SimpleLink, чипы CC1310, CC2630 и CC2650.


Под хабракатом — объяснение, почему выбор именно таков и почему мы считаем его правильным.


Читать дальше →
Всего голосов 25: ↑20 и ↓5 +15
Комментарии 128

Эволюция Java на примере чтения строк из файла

Время на прочтение 2 мин
Количество просмотров 126K
Приведу небольшой и интересный, на мой взгляд, пример, как изменилась жизнь простого крестьянина Java разработчика, на примере задачи чтения и печати строк из файла.



Многие из нас помнят

'до Java 7' мучения:


        BufferedReader reader = null;
        try {
            reader = new BufferedReader(
                        new InputStreamReader(
                            new FileInputStream(FILE_NAME), Charset.forName("UTF-8")));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            // log error
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    // log warning
                }
            }
        }

Читать дальше →
Всего голосов 34: ↑18 и ↓16 +2
Комментарии 17

Правильный Singleton в Java

Время на прочтение 4 мин
Количество просмотров 422K
Уверен, каждый из читателей, знает что такое шаблон проектирования “Singleton”, но не каждый знает как его программировать эффективно и правильно. Данная статья является попыткой агрегирования существующих знаний по этому вопросу.

Кроме того, можно рассматривать статью как продолжение замечательного исследования, публиковавшегося на Хабрахабре ранее.
Читать дальше →
Всего голосов 67: ↑53 и ↓14 +39
Комментарии 84

URANUS: первый работающий настольный SLA (стереолитографический) принтер

Время на прочтение 4 мин
Количество просмотров 16K
В этот раз хочу рассказать о том, как я познакомился с первым (на момент написания статьи) нормально работающим настольным стереолитографическим принтером (URANUS) который есть в Москве.


История 3d-принтеров началась в 1984 году именно со стереолитографического устройства. Сейчас же подобные принтеры очень часто используют ювелиры, так как точность печати подобных моделей на порядок превосходит FDM устройства (которые печатаю пластиком)

Под катом несколько фоток внутренностей принтера и рождение гидралиска из «кровавой ванны»

image
Spawn Hydralisk (H)
Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 14

Еще один домашний стереолитографический принтер

Время на прочтение 6 мин
Количество просмотров 17K


В сентябре прошлого года закончился на кикстартере сбор средств на создание еще одного принтера – LittleRP. По сравнению с аналогами его выгодно отличала цена (без учета проектора принтер мог вам обойтись в 500$). Так как необходимые средства были собраны буквально за пару часов, я могу сказать, что мне посчастливилось попасть в первую группу бэкеров, и вот на прошлой неделе я его получил. Видя, что тема актуальна, решил поделиться с общественностью впечатлением от приобретения.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 11

Почти DIY 3d сканер для дома

Время на прочтение 11 мин
Количество просмотров 99K


Пару лет назад попалась мне на глаза статья на хабре о 3D-сканере за 30$, и очень меня эта тема заинтересовала, хотя быстро пришло понимание того, что ни о каких 30$ для качественного сканирования не может быть и речи.

Но основной плюс, который я вынес из статьи – программа для сканирования David-3D, к которой действительно есть хорошее руководство на русском языке и, что немаловажно, покупка лицензии — это последнее, что требуется, так как ограничение у бесплатной версии только на сохранение результата сканирования. Все остальное работает в полной мере, а значит вполне можно тестировать программу, настройки и свое железо сколько угодно. А если вам и результат не требуется с высокой точностью – то и вовсе без покупки лицензии можно обойтись.
Читать дальше →
Всего голосов 57: ↑57 и ↓0 +57
Комментарии 10

Integer и int

Время на прочтение 4 мин
Количество просмотров 141K
В этом топике я хочу описать некоторые базовые различия между примитивными типами и соответствующими им объектными на примере int и Integer. Различия эти достаточно простые и, если немного задуматься, то вполне логичные, но, как показал опыт, программист не всегда над этим задумывается.

Основное различие, разумеется, в том, что Integer — это полнофункциональный объект, который занимает место в куче, а в коде вы пользуетесь ссылками на него, которые неявно преобразуются в значения:
int a = 1000// a - число
Integer b = 1000// b - ссылка на объект
При присваивании значения переменной типа Integer обычно выделяется память в куче под новый объект, как будто вы написали new Integer(1000) (так называемый autoboxing). Однако иногда переиспользуются старые объекты. Это иллюстрирует следующий код (JDK 1.6):
Integer a1 = 50;
Integer a2 = 50;
Integer b1 = 500;
Integer b2 = 500;
System.out.println(a1==a2);
System.out.println(b1==b2);
Результатом выполнения будет:
true
false
Читать дальше →
Всего голосов 77: ↑72 и ↓5 +67
Комментарии 91

ООП с примерами (часть 1)

Время на прочтение 4 мин
Количество просмотров 604K
Волею судьбы мне приходится читать спецкурс по паттернам проектирования в вузе. Спецкурс обязательный, поэтому, студенты попадают ко мне самые разные. Конечно, есть среди них и практикующие программисты. Но, к сожалению, большинство испытывают затруднения даже с пониманием основных терминов ООП.

Для этого я постарался на более-менее живых примерах объяснить базовые понятия ООП (класс, объект, интерфейс, абстракция, инкапсуляция, наследование и полиморфизм).

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

Читать дальше →
Всего голосов 85: ↑64 и ↓21 +43
Комментарии 67

Маленькие хитрости Java

Время на прочтение 4 мин
Количество просмотров 269K
Я уже достаточно много лет занимаюсь разработкой на java и повидал довольно много чужого кода. Как это не странно, но постоянно от одного проекта к другому я вижу одни и те же проблемы. Этот топик — попытка ликбеза в наиболее часто используемых конструкциях языка. Часть описанного — это довольно банальные вещи, тем не менее, как показывает мой опыт, все эти банальности до сих пор актуальны. Надеюсь, статья пригодится многим java программистам. Итак, поехали:

new vs valueOf

//медленно
Integer i = new Integer(100);
Long l = new Long(100);
String s = new String("A");

//быстро
Integer i = Integer.valueOf(100);
Long l = 100L;//это тоже самое что Long.valueOf(100L);
String s = "A";


Старайтесь всегда использовать метод valueOf вместо конструктора в стандартных классах оболочках примитивных типов, кроме случаев, когда вам нужно конкретно выделить память под новое значение. Это связано с тем, что все они, кроме чисел с плавающей точкой, от Byte до Long имеют кеш. По умолчанию этот кеш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кеша. Значение из кеша достается в 3.5 раза быстрее чем при использовании конструктора + экономия памяти. Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной. В случае, если ваше приложение очень часто использует целые типы, можно увеличить кеш для Integer через системное свойство «java.lang.Integer.IntegerCache.high», а так же через параметр виртуальной машины -XX:AutoBoxCacheMax=<size>.
Читать дальше →
Всего голосов 141: ↑126 и ↓15 +111
Комментарии 166

Программа курса «Java Core»

Время на прочтение 3 мин
Количество просмотров 175K
Я занимаюсь онлайн обучением Java (вот курсы программирования) и публикую часть учебных материалов в рамках переработки курса Java Core. Видеозаписи лекций в аудитории Вы можете увидеть на youtube-канале, возможно, видео канала лучше систематизировано в этой статье.
Хотел бы вынести на обсуждение новую программу курса Java Core.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Программа курса


Курс состоит из 45 лекций разбитых на 9 модулей по темам
  1. Модуль: Основы
    • Лекция #1.1: целочисленные типы, типы с плавающей точкой, bit operations
    • Лекция #1.2: массивы, java.lang.String, format
    • Лекция #1.3: for/switch/while, boolean logic(|, ||, &, &&, !, ^)
    • Лекция #1.4: порядок выполнения операторов, построение internal DSL
  2. Модуль: Процедурное программирование
    • Лекция #2.1: Циклы, итеративные алгоритмы
    • Лекция #2.2: Рекурсия I, основы
    • Лекция #2.3: Рекурсия II, проектирование рекурсивных алгоритмов
    • Лекция #2.4: Динамические структуры данных
    • Лекция #2.5: Память в Java: stack, heap, PermGen/Metaspace
  3. Модуль: Исключения
    • Лекция #3.1: try-catch-finally
    • Лекция #3.2: checked/unchecked
    • Лекция #3.3: Internals and handling
    • Лекция #3.4: Java 7: try-with-resources
    • Лекция #3.5: Most popular exceptions in JDK

Читать дальше →
Всего голосов 27: ↑16 и ↓11 +5
Комментарии 22

1000+ часов видео по Java на русском

Время на прочтение 7 мин
Количество просмотров 1.3M
Добрый день.
Меня зовут Головач Иван, я руковожу небольшой образовательной компанией и преподаю сам:
  1. Java Core
  2. Junior Java Developer: Servlet API, JDBC, Maven, JUnit, Mockito, Log4J, основы Spring/SpringMVC, основы JPA/Hibernate, шаблоны/архитектуры MVC/IoC/DAO.
  3. Multicore programming in Java.


Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

В следствии этого у меня скопилось значительно количество ссылок на видео на русском языке по Java как моего авторства, так и моих коллег.

(GolovachCourses.com)


Здесь собраны несколько вариантов записи моего курса Java Core.
Модуль #1 (Procedural Java):
Набор июль 2013: #1, #2, #3, #4
Набор апрель 2013: #1, #2, #3, #4
Набор февраль 2013: #1, #2, #3, #4
Набор январь 2013: #1, #2, #3, #4
Набор октябрь 2012: #1, #2, #3, #4.
Читать дальше →
Всего голосов 120: ↑111 и ↓9 +102
Комментарии 38

Пузырьковая сортировка и все-все-все

Время на прочтение 5 мин
Количество просмотров 611K

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

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

image: пузырьки

Сделать первый шаг в изучении сортировок
Всего голосов 116: ↑104 и ↓12 +92
Комментарии 35

Познаём Java. Первая чашка

Время на прочтение 3 мин
Количество просмотров 21K

Что да как


Я решил поддержать начинание MaxElc и DarwinTenk, и начать потихоньку рассказывать про Java. Текст буду подавать «чашками» потому, что один из символов Java — чашка кофе. Большую часть я буду писать сам, изредка поглядывая в википедию и на официальный сайт языка — java.sun.com (раздел /docs).
Далее в тексте стоит разделять понятия «Java как язык» и «Java как платформа».
Читать дальше →
Всего голосов 150: ↑128 и ↓22 +106
Комментарии 141

Познаём Java. Вторая чашка: собираем классы в кучки. Пробуем апплеты

Время на прочтение 5 мин
Количество просмотров 79K

Чем обусловлена структура Java?


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

Как происходит загрузка классов?


Читать дальше →
Всего голосов 59: ↑48 и ↓11 +37
Комментарии 70

ООП с примерами (часть 2)

Время на прочтение 5 мин
Количество просмотров 675K
Волею судьбы мне приходится читать спецкурс по паттернам проектирования в вузе. Спецкурс обязательный, поэтому, студенты попадают ко мне самые разные. Конечно, есть среди них и практикующие программисты. Но, к сожалению, большинство испытывают затруднения даже с пониманием основных терминов ООП.

Для этого я постарался на более-менее живых примерах объяснить базовые понятия ООП (класс, объект, интерфейс, абстракция, инкапсуляция, наследование и полиморфизм).

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

Читать дальше →
Всего голосов 50: ↑37 и ↓13 +24
Комментарии 37

Мой опыт обучения детей 8-10 лет программированию на Scratch

Время на прочтение 8 мин
Количество просмотров 269K
Давно собирался написать об этом, но, модная болезнь прокрастинация брала вверх…

Знакомство со Scratch


Когда сыну Артёму исполнилось 7 лет и он пошел в школу, мы ему подарили компьютер, чтобы он не отставал от жизни. Несколько месяцев он играл в разные игры, наслаждался, развлекался и т.п. Мне стало немного обидно, что такой дорогой и сложный прибор как компьютер используется только для развлечений, и я решил придумать, как использовать компьютер для обучения. А чему можно научиться на компьютере? Конечно, программированию! Тут я и вбил в «Яндекс» заветную фразу «обучение детей программированию».
Читать дальше →
Всего голосов 77: ↑74 и ↓3 +71
Комментарии 62

Структуры данных в картинках. ArrayList

Время на прочтение 3 мин
Количество просмотров 870K
Приветствую вас, хабралюди!

Взбрело мне в голову написать несколько статей, о том как реализованы некоторые структуры данных в Java. Надеюсь, статьи будут полезны визуалам (картинки наше всё), начинающим java-визуалам а также тем кто уже умеет писать new ArrayList(), но слабо представляет что же происходит внутри.



Сегодня поговорим о ArrayList-ах

ArrayList — реализует интерфейс List. Как известно, в Java массивы имеют фиксированную длину, и после того как массив создан, он не может расти или уменьшаться. ArrayList может менять свой размер во время исполнения программы, при этом не обязательно указывать размерность при создании объекта. Элементы ArrayList могут быть абсолютно любых типов в том числе и null.

Поверить на слово
Всего голосов 89: ↑82 и ↓7 +75
Комментарии 66

Информация

В рейтинге
Не участвует
Откуда
Пермь, Пермский край, Россия
Зарегистрирован
Активность