Как стать крутым прогером? | Практическая Java
Сижу на работе один, заняться нечем. Вот и подумал, а не написать ли руководство для крутых прогеров. Освоив это руководство, Вы сможете смело заходить на любые прогерские форумы и гнобить тамашних посетителей еще не таких крутых прогеров как Вы.
Итак, дорогие читатели моего журнала, начнем. Многие думают, что крутота прогера определяется количеством освоенных им технологий и количеством проектов в которых он поучаствовал. На самом деле — это фигня. Крутота прогера измеряется количеством и серьезностью ошибок которые он допустил за свою жизнь. Сегодня я расскажу о 2х самых наиболее частых и серьезных ошибках в веб-программировании. Правда ни один крутой прогер никогда не сознается, что он их допускал. Но будьте уверены, если вы видите перед собой крутого прогера, то эти 2 ошибки он допускал точно. И наоборот, если прогер успел допустить эти 2 ошибки, то он уже дико крут! Собственно, это не ошибки а описания атак на сайты, но атаки эти возможны в следствии ошибок теперь уже крутых прогеров.
SQL-injection
Очень стара атака. Реализуется до безобразия просто, если прогер формирует SQL-запросы при помощи конкатенации строк (конкатенация — это крутое прогерское слово, которое обозначает соединение строк, но крутые прогеры всегда употребляют слово «конкатенация», потому что так круче). Итак предположим, что прогер проверяет правильность пароля SQL-запросом следующего вида:
"select * from users where login='"+login+"' and password='"+password+"'"
Возьмем какой-нибудь логин попроще, например «admin», а пароль сформируем следующим образом: «' or ''='
«. В результате получим SQL-запрос:
"select * from users where login='admin' and password='' or ''=''"
Такой запрос будет всегда выдавать всех пользователей. И злоумышленнику не составит труда проникнуть в систему. Конечно, в различных системах проверка паролей различается, но угадать всегда можно, если систему писал пока еще не крутой прогер.
Как же этого избежать? Наприм
appliedjava.wordpress.com
Про кодерров и прогерров :-)))
Форум: «Потрепаться»;
Поиск по всему сайту: www.delphimaster.net;
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
Вниз
Про кодерров и прогерров :-)))
FLIZ (2002-12-22 01:08) [0]
кто такие кодеры и кто такие программисты? :-)
Все вы здесь приводили доводы в том стиле что кодер
не может составить определенный алгоритм, а прогер
может и потому он прогер. Прогер дескать умнее а
кодер тупее.
А я вот делаю разделение немного в другой плоскости,
так сказать. По моему прогер — это тот кто любит
создавать качественные программы, повышает свое
мастерство в этой области, живет с мыслями об этом.
Как правило это перестает быть хобби и начинает
стремится создать и внедрить свой продукт по моему
однозначно прогер. Прогер — это творец. Он может не
полностью разбиратся в каких-то особых тонкостях
программирования или в изощренных алгоритмах.
Он стремится создать интересный программный продукт,
довести его до пользователя.
А что такое кодер? а это человек случайно попавший в
мир создания программ (специально не написал «в мир
программирования»). Ему по фигу что там получит пользователь.
Знаю немало случаев когда на фирме «набросать программку»
получали кому угодно и в результате получалось что угодно :((
Знаю и другие ситуации — когда люди косвенно относящиеся
к компам, «упирались» например в Аксесс и создавали хорошо
оформленные и неплохо работающие офиссные приложения.
Кто они? по моему — прогеры. «Локальные», так сказать :-)
Кодер работает от звонка до звонка, не стремится поднять
свой уровень знаний. Если что-то не получается — скорее
бежит в конфу и задает вопросы с идиотской сутью и
идиотским оформлением фраз в стиле «у меня прога не работает,
че делать? исходники дайте готовые!».
Отсюда получаются все составляющие вторичные признаки :
прирожденный прогер через некоторое время знает много чего
(языки, алгоритмы, аппаратные особенности машины и т.д.) а кодер
остается чем-то средним, только амбиции добавляются и список
«плохих языков программирования» в которых он не разобрался
у него растет.
Уровень его программ, кстати тоже остается средний или низкий.
Теперь к вопросу о программированию «чужих» алгоритмов.
Работал я в одной фирме где большая задача разбивается на
куски и каждому программисту дают решить конкретнуюю задачу.
кода мог такую чушь написать, что лишь бы результат его
функции был правильным. А как там память и оптимизация — ему
пофигу. А програмер даже в элементарных функциях применит
свои знания и все будет максимально оптимально и хорошо.
Кстати, прогер в целом, смотрит дальше своего носа, в структуре
программы старается заложить возможности ее развития в дальнейшем.
в общем вот так… :)
З.Ы.
и наврядли кодеры сидят в Дельфи в выходные, чтобы понять
что-то новое :).Им это не нужно.
З.З.Ы.
естесвенно это все имхо. написал не в укор или наезд на кого-то,
просто решил выступить 🙂
nu und (2002-12-22 01:16) [1]
>FLIZ © (22.12.02 01:08)
Логично! Кодер = Программист-любитель;Программист = Программист-профи или -будующий профи.
FLIZ (2002-12-22 04:04) [2]
эээ… в 4 ночи трудно понять — это с ирониейц или нет? :-))
MikeN (2002-12-22 04:12) [3]
то бишь Майк Науменко (царство ему небесное, если он сам хотел его) уже давно ответил на сей вопрос: «Это гопники, они мешают нам жить»!
Viktor Kushnir (2002-12-22 09:22) [4]
А как назвать человека, который тратит на Дельфи выходные, получает от этого удовольствие и никаких денег?
Lola (2002-12-22 11:27)
Мне, например, абсолютно без разницы, как называться :))) Лишь бы заплатили вовремя и в полном объеме ;)))
Одно скажу, одним без других не обойтись. Кто-то может и должен «творить», а кто-то выполнять «черную» работу. Главное, чтобы волею судьбы или начальства они не поменялись местами.
Marser (2002-12-22 12:24) [6]
Да ну вас!Я свою точку зрения высказал в ветке «Начало».
Сатир (2002-12-22 12:59) [7]
…эх, жалко, что сёдня выходной…
но ничего, потерпите немножко, в Понедельник прийдёт Эльф и расставит все точки над «i»%)
Ihor Osov’yak (2002-12-22 13:10) [8]
2 Сатир © (22.12.02 12:59)
Это тот, который Ketmar?
Сатир (2002-12-22 13:34) [9]
2Ihor Osov»yak © (22.12.02 13:10)
ya-ya, das ist er
Оливейра (2002-12-22 13:36) [10]
Какой-то наивный юноша пост толкнул. Мне лично глубоко по барабану, как меня назовут, хоть горшком, главное — проект в срок сдать с минимумом багов. А навык оптимизации с опытом непременно придет, особенно если работаешь в софтверной команде, где тебе просто ВДОЛБЯТ в подкорку, как переменные обзывать, где пробелы делать, где ++i, а где i++ ставить. Программировать и обезьяну научить можно. Это такое же ремесло, как и хот-доги продавать. Одни более способные, другие менее…
Judith (2002-12-22 14:10
Оливейра © (22.12.02 13:36)
Совершенно верно.
Народ, ну неужели нельзя обойтись без ярлыков?
Ketmar (2002-12-22 14:28) [12]
>FLIZ © (22.12.02 01:08)
бредим. видимо оттого, что пиво кончилось.
>Viktor Kushnir © (22.12.02 09:22)
назвать психом. %-)
>Сатир © (22.12.02 12:59)
а самому потрудиться? всё я да я… %-))
>Judith © (22.12.02 14:10)
можно. но уж коли подняли вопрос… не в том дело, что ярлык навесили, а в том, что неправильный %-)
о том, кто есть кодеры я говорил уже не раз, повторяться просто лень. я лучше код писать буду %-))
Satanas Nobiscum! 22-Dec-XXXVII A.S.
Сатир (2002-12-22 14:33 ) [13]
2Ketmar © (22.12.02 14:28)
пятёрочка, особенно это:
не в том дело, что ярлык навесили, а в том, что неправильный
Viktor Kushnir (2002-12-22 15:47) [14]
На счет способностей — все бегом на lib.km.ru -> АИЗЕК АЗИМОВ:
ПРОФЕССИЯ
FLIZ (2002-12-23 00:34) [15]
2 Оливейра © (22.12.02 13:36)
>Какой-то наивный юноша пост толкнул.
не согласен! 🙂 и на то есть причины … 🙂
Dok_3D (2002-12-23 06:14) [16]
Прогеры, кодеры, памперсы …
Дурь.
А, и еще, автор не написал, к какому из пунктов его классификации он себя относит.
OlDemon (2002-12-23 07:45) [17]
Согласен с dok-3D. Это похоже на «гопников» — «нефоров» средней школы. Одни хорошие — другие плохие. А кто конкретно, зависит от принадлежности говорящего.
2 ketmar> мне вот итересно что твой тирлайн значит. Даже в инете искал. Ненашел. Могет скажешь?
Ketmar (2002-12-23 11:08) [18]
>OlDemon © (23.12.02 07:45)
это не тирлайн. это оригин %-)) в FAQ. для намёка: Satanas — это он самый, Nobiscum — это «с нами». %-)
Satanas Nobiscum! 23-Dec-XXXVII A.S.
Ru (2002-12-23 11:20) [19]
слыхал такое мнение «програмист натура творческая он творит программы и может это делать даже без компьютера»
кодер сродни секретарше, но каждый прогер тоже кодер, но апгрейженый Ж:)
.nuke (2002-12-23 11:21) [20]
>А что такое кодер? а это человек случайно попавший в
>мир создания программ.
странное мнение, а ктож по твоему те люди которые всякие демы и интро пишут? извиняюсь и _НЕ_НА_ДЕЛФЯХ_, для демомэйкеров кодер это такой человек который как раз дожен позаботиЦа об оптимизации, ибо его задача объединить въедино все то что написали художни, моделер и музыкант, и чтоб оно все шустро бегало без затраты больших ресурсов.
VAleksey (2002-12-23 11:27) [21]
Хм … я случайно в этом мире…
Вообще, в сысле 🙂
Ketmar (2002-12-23 11:50) [22]
>.nuke © (23.12.02 11:21)
хоть кто-то знает, где водятся настоящие кодеры и что они из себя представляют. %-)
зыж
кстати, совсем не по теме: вспомнились слова pascal»я: comments are for beginners %-)
Satanas Nobiscum! 23-Dec-XXXVII A.S.
Форум: «Потрепаться»;
Поиск по всему сайту: www.delphimaster.net;
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
Наверх
EMAIL={{}};LOGIN={{FLIZ}};TITLE={{Про кодерров и прогерров :-)))}};ATTRIBUTES={{}};ID_MSG={{302708}};ID_GROUP={{14}};ID_NNTP={{93327}};ID_DM={{37297}};REPLYNR={{0}};ID_DM_AUTHOR={{0}};ARCHIVE={{2003.01.13}};REPLYDATE={{2002-12-22 01:08}};CNT={{22}};
Память: 0.8 MB
Время: 0.051 c
www.delphimaster.net
Что такое материнская плата? Устройство, виды и принцип работы. — Mr.Proger
Начнём с определения:
Материнская плата (Motherboard)— это основная деталь нашего компьютера, которая объединяет все остальные комплектующие в одно целое. Она представляет собой печатную плату, на которой расположены интерфейсы, порты и разъёмы.
Форм- факторы материнских плат.
Форм- фактор материнской платы— это общепринятые стандарты, определяющие габаритный размер материнской платы, различные типы дополнительных элементов, разъёмов и их положение (места установки).
Примеры разных форм- факторов изображены и, соответственно, подписаны ниже:
Разъём для процессора (Socket).
Сокет— это разъём («посадочное» место) для центрального процессора, который обеспечивает обмен данными между текущими процессами. Так как на рынке предлагают свои процессоры компании- гиганты Intel и AMD, соответственно, и производители материнских плат устанавливают разъёмы, совместимые с этими процессорами. Скажем так, выбор материнской платы при сборке ПК в корне решает его будущую платформу и конфигурацию. Всегда на материнских платах и процессорах производители указывают сокет. Если параметр совпадает, значит комплектующие совместимы.
Примеры сокетов от Intel: LGA771, LGA775, LGA1567, LGA1366 , LGA1156, LGA1155, LGA2011, LGA1356, LGA1150, LGA2011-3, LGA1151, LGA 2066, LGA 1151-v2, и т.д.
Пример: сокет LGA1151:
Пример: слева направо сокеты LGA2011, LGA1366, LGA1155, LGA775:
Примеры сокетов от AMD: Socket AM2, Socket AM2+, Socket AM3, Socket AM4, Socket FM1, Socket TR4, Socket AM4+, и т.д.
Пример: сокет Socket AM3:
Как узнать сокет материнской платы? Производитель всегда явно выделяет данную информацию! Указывается и на коробке материнской платы, и непосредственно на материнской плате на (или около) разъёма. Вернитесь к предыдущему изображению и найдите на нём «AM3». Производитель указал совместимость материнской платы с процессорами AMD Socket AM3. Теперь ниже пример с материнской платой для платформы Intel:
Как видите, и тут производитель указал совместимость материнской платы с процессорами Intel LGA1151.Как ещё узнать сокет материнской платы? Название модели платы поможет отыскать Вам её сокет в интернете. Ниже примеры, как указываются модели на материнских платах:
Чипсет материнской платы.
Чипсет— это набор микросхем, которые устанавливаются на материнской плате и обеспечивают, в свою очередь, обмен информацией между процессором и остальными подключёнными устройствами. Сказать попросту, чипсет помогает всей системе понимать друг друга и выполнять задачи слаженно. Поэтому, чипсет является основным элементом современной материнской платы. Совсем недавно на все материнские платы устанавливался чипсет, который состоял из двух микросхем. А именно, северный и южный мосты (слышали, не так ли?). Итак, основной задачей северного моста- работа с оперативной (энергозависимой) памятью компьютера и работой встроенного видеоядра в процессор, тогда как южный мост отвечает за работу шин PCI Express, BIOS (UEFI), системные часы, разъёмы SATA/USB/LAN/Audio, работу с HDD/SSD, работу мышки и клавиатуры, периферийных устройств и т.д. Считается, что северный мост контролирует быстрые и более энергоёмкие операции, а южный мост- наоборот медленные.
Северный мост на материнской плате располагается ближе к разъёму процессора, чем южный:
Однако, в материнских платах более нового типа северный мост отсутствует.
Его задачи взял на себя центральный процессор. Это позволило увеличить быстродействие контроллера а так же упростило изготовление материнских плат.
Микросхема (чип) BIOS (UEFI).
Что такое BIOS? BIOS— это базовая система ввода- вывода, созданная компанией Microsoft. По сути это прошивка, которая содержит инструкции, которые позволяют проверить оперативную память и процессор на наличие неисправностей и загрузить операционную систему. Так же инициализирует наличие других подключённых компонентов. При запуске компьютера первой запускается BIOS. Более современные материнские платы используют UEFI прошивку. Она отличается от стандартной BIOS расширенным и более дружелюбным интерфейсом (включая поддержку мультиязычности и поддержку мыши), так же имеет дополнительное встроенное программное обеспечение. Главное отличие: BIOS производит последовательную (по очереди) инициализацию оборудования, а UEFI обеспечивает параллельную загрузку всех компонентов, соответственно время для загрузки ПК существенно уменьшается. Так же UEFI поддерживает GPT- разметку физической памяти, что даёт нам возможность устанавливать жёсткие диски и SSD- накопители объёмом более 2-х TB (терабайт).
Пример: ниже представлен типичный интерфейс BIOS:
Интерфейс UEFI в корне отличается от BIOS. Спутать их практически невозможно:
Внесённые пользователем настройки BIOS (UEFI) сохраняются в микросхеме CMOS. Видели батарейку на материнской плате? Так вот она обеспечивает энергонезависимость платы CMOS, а так же системное время. Так как потребляется очень мало электроэнергии (меньше одного микроампера) такой батарейки хватает, минимум, на год. А то и на 2- 3 года. В некоторых случаях, если батарейка пришла в неисправность, компьютер может не включиться. Такое поведение может показаться страшным, вплоть до предположений неисправности самой материнской платы, однако чтобы исключить данную причину нужно всего лишь вытащить батарейку и попробовать снова запустить компьютер. Если система запустилась, или хотя бы начала проявлять признаки жизни, значит проблема именно в батарейке, которую необходимо заменить.
Заключительная часть.
Итак, мы с Вами разобрались что такое материнская плата, какие бывают материнские платы и основные параметры и составляющие материнских плат. В заключение скажу ещё.. Если вы собираете ПК, так же необходимо обращать на виды и количество портов, таких как SATA, USB, интерфейсы встроенного в процессор видеоадаптера (VGA, DVI, HDMI и др.), кол- во разъёмов для оперативной памяти. От этого будет зависеть, сколько в будущем вы сможете (например) подключить жёстких дисков (разъём SATA), будет ли у Вас USB 3, и их кол- во, определит кол- во планок оперативной памяти, которые можно подключить и т.д.
mr-proger.ru
Что такое электричество. Понятие электричества на примере постоянного тока — МикроПрогер
Попробуем разобраться в физике электричеcтва без использования 1/2 литра. Будем говорить совсем просто. Для пущей простоты разберем понятие физики электричества на примере постоянного тока (не переменного). Для начала напишем закон Ома U=I*R (напряжение (1В — вольты) равно произведению силы тока (1А — амперы) на сопротивление (1Ом — омы).
Итак, что такое электричество? Основная суть электричества заключается в передачи энергии по цепи постоянного либо переменного тока. Источник электричества — преобразователь энергии, например тепловой или механической, в электрическую. Электрическая цепь — провода, по которым течет ток, и потребители — преобразователи электрической энергии обратно в механическую, тепловую, химическую, световую и т.д.
Сравнение с водой
Электричество часто и по праву сравнивают с водой. Сравнение довольно удачное. Инженерам Honda, в свое время, объясняли что такое электричество, а также обучали правилам и методам работы с током с помощью видеороликов, в которых течение тока по проводу иллюстрировалось бегущей по прозрачным трубкам водой.
Понятия
В этой статье мы затронем понятие Резистора, Источника питания, Потребителя, а также сопротивления, напряжения и силы тока.
Источник тока представляет собой конструкцию, у которой прежде всего есть два вывода — два контакта(«+» и «-«).
источник тока
Основная задача источника питания — создавать напряжение(потенциал) между контактом «+» и «-«. Напряжение(потенциал) на контактах «+» и «-» не изменяется с течением времени, а его значение зависит от характеристик источника питания. Напряжение в источнике питания похоже на давление или на силу, с которой насос тянет в одно свое отверстие воду(из аквариума например) и нагнетает ее в другое отверстие (к которому стыкуется шланг). Понятие сила тока похоже на количество воды, которая бежит по насосу и шлангу под действием напряжения.
насос качает воду
Теперь к свободному концу шланга мы прикрепим вентиль, которым будем ограничивать мощность потока воды. Давление, создаваемое насосом будет тем же, что и раньше, а вот количество воды, которая бежит по шлангу(мощность потока) будет уменьшаться.
Роль вентиля в электричестве играет прежде всего резистор. Резистор ограничивает (приостанавливает) ток своим сопротивлением, то есть является ограничителем тока. На резисторе падает часть напряжения (так же как падает и давление воды после прохода через вентиль).
Схема с резистором и без резистора
Короткое замыкание
Важный момент. Если замкнуть «+» и «-» контакты источника тока — то сопротивление между «-» и «+» будет очень близким к 0. И получится короткое замыкание в цепи (КЗ). Исходя из закона Ома U=I*R : напряжение у нас постоянное, сопротивление уменьшаем до 0, получается ток стремится к бесконечности. Но дело в том, что каждый источник питания имеет предельно допустимую величину силы тока. Если этот параметр в цепи превысить — источник сгорит. Это и будет результатом КЗ.
Потребитель электрического тока — устройство, которое использует энергию электричества для выполнения своих задач. Потребитель имеет внутреннее сопротивление(то есть отчасти является резистором). За счет этого сопротивления он ограничивает ток в цепи (снова ссылаемся на закон Ома) и при подаче на него необходимого напряжения потребляет вполне себе фиксированный постоянный ток.
Остались вопросы? Напишите комментарий. Мы ответим и поможем разобраться =)
Автор публикации
не в сети 5 месяцев
wandrys
877 Комментарии: 1Публикации: 31Регистрация: 17-03-2016micro-proger.ru
Что такое ШИМ. Широтно Импульсная Модуляция. ШИМ контроллер — МикроПрогер
Уважаемый микропрогер, будем разговаривать с вами предельно простым языком:
представим себе электрический импульс А с амплитудой напряжения от 0В до 5В, длиной 1 мс и периодом повторения 10мс (т.е. в течение 1 мс напряжение на линии, по которой проходит импульс А составляет 5В, затем в течение 9мс составляет 0В, и так повторяется каждые 10 мс). А теперь представим, что мы увеличиваем длительность импульса А до 2мс (пусть теперь это будет импульс Б), а повторяется он точно те же каждые 10мс. Задача изменения длительности импульса А с 1мс до импульса Б 2 мс и есть задача ШИМ.
Вообще говоря слово «Модуляция» означает изменение параметров колебания (частоты, амплитуды, фазы). Широтно-импульсная модуляция — изменение скважности импульсов при постоянной частоте. Скважность — то же самое, что протяженность, т.е. в нашем примере это изменение протяженности импульса с 1мс до 2мс.
ШИМ регулятор
Работа ШИМ регулятора наглядно отображена на данной картинке-графике.
На графике мы видим три сигнала. Сигналы модулируются ШИМом, который генерирует и регулирует скважность импульсов.
Скважность на графике сверху — 15%. То есть, за один период, равный 100%, 15% времени выдается логическая единица (напряжение TTL уровня +3В либо +5В). 75% времени выдается логический ноль (отсутствие напряжения в линии — 0В).
На среднем графике скважность 50% — 50% времени выдается логическая 1, 50% выдается логический 0.
На графике снизу скважность 90%. 90% -1. 10% — 0.
Если подключить светодиод к нашему ШИМ регулятору, то в случае с первым графиком светодиод будет светиться слабо. С графиком 2 свечение светодиода будет ярче чем с 1, но сам светодиод будет светиться на 50% своей мощности. В случае с 3-им графиком, яркость свечения светодиода будет настроена на 90%, близкие к максимальным.
Как видим, с помощью ШИМ очень удобно регулировать яркость свечения светодиода, а также работу шагового двигателя.
Еще раз вспомнил наши импульсы А и Б. Они бегут по проводу к потребителю электрического тока и представляют собой электрический ток с определенным напряжением(Вольты) и определенной силой(Амперы), которая зависит от потребителя. Потребители в общем случае кушают фиксированный ток (например 300мА). То есть, если бы импульс А или Б длился все 10мс и не прерывался, то потребление тока для потребителя составило именно 300мА. Если же мы прерываем ток длительностью импульса, то потребление тока при действующем импульсе А составит 300мА * (1/10) = 30мА, при импульсе Б 300мА * (2/10) = 60мА.
Генераторы ШИМ применяются в задачах управления светодиодными светильниками. Все предельное просто: чем больше тока подаем на светодиод, тем ярче он светится. То же самое с RGB светодиодами — подаем на красный(R) импульс А(30мА), на синий импульс Б(60мА), на зеленый 0 — получаем тусклый фиолетовый свет, который получается от менее яркого красного и более яркого синего цветов.
ШИМ применяется в задачах управления вращающимися двигателями — чем больший ток подаем на контакты движка, тем быстрее он вращается. А если двигателя мы имеем три, а в придачу у нас куча идей и целая программа для последовательной подачи импульсов типа А и Б на их обмотки? Тут можно сколотить целый 3Д принтер!
Для микропрогерского осознания сути словосочетания «ШИМ контроллер«, достаточно понимать общее назначение опорной частоты и способах выдачи на одну ножку микросхемы последовательности логических нулей и единичек.
Допустим, у нас есть микроконтроллер или ПЛИС и все тот же вращающийся движок, который при постоянном токе 5В потребляет 300мА и при этом потреблении вертит своей осью 10 раз в секунду. Теперь нас попросили — сделайте так, чтобы я нажимал на кнопку, а движок сделал 5 оборотов с частотой 1 оборот в секунду, затем сделал еще 2 оборота за 1 секунду и выключился.
Что мы делаем?
Правильно, пишем программу для нашей любимой логической приблуды — плисины или микрика. В проге будет вход, при наличии 1 на котором запускается цикл — выдача 1 в течение 1мс, затем 0 в течение 9мс, так 5 раз подряд. Затем выдача 1 2мс два раза подряд. end module. Start Compilation.
Только перед подключением нагрузки(двигателя) к микроконтроллеру или ПЛИС не забываем прочесть вот эту короткую, по очень полезную статью, не позволяющую спалить наш новоявленный ШИМ-контроллер.
Все просто!
Остались вопросы? Напишите комментарий. Мы ответим и поможем разобраться =)
Автор публикации
не в сети 5 месяцев
wandrys
877 Комментарии: 1Публикации: 31Регистрация: 17-03-2016micro-proger.ru
Далее прогер — программист, кодер — так называемый кодировщик (вроде так их называют), прога — программа. А ты?! Да ты?! Именно! Чуешь разницу меж «кодером/прогером»? Просто многие те, кто пишут проги, думают, что они прогеры, так как программист это типо тот, кто делает программы. А может программы делают программистов? О_о Всё относительно. Например строителем можно обозвать ребёнка в песочнице который строит замок, однако втоже время, может этот ребёнок в песочнице строит дом О_О. Строителями называют обычно тех, кто имеет хотябы какое-то мастерство в своём деле. Ещё любят такое смачное слово «специалист». Типо «я специалист» ололо. Так вот, кодерами обычно называют тех, кто набирает код программы… Это не означает что код программы неможет набирать прогер. Просто тогда прогер кодит ). Дак в чём же отличие? Кто же тогда прогер? Прогер это тот кто разробатывает архитектуру софта, подбирает алгоритмы, структуры данных, и прочее. Прогеры тоже бывают разными — заразными, злыми — добрыми, флудерами — молчунами, крутыми — ватнегами, задротами — нубами, тру — фэлс, и т.д. Кроме того прогерам платят много больше чем кодерам ). Теперь два примера, ставящих кодеров и прогеров на свои места. Пример номер раз (краштест для нубов): часто приходится сортировать списки из элементов, по какому-то «порядку» (линейному, если тут бывают ботаны кроме меня… см. Отношение Порядка) Начнём с кодеров… Кодер-обыкновенный с интузиазмом отнесётся к данной задаче, типа: «сча мы тут всё отсортируем», и начнёт придумывать алгоритмы — оно и правильно. Просто у всех разная думалка, и я считаю велосипеды придумывать полезно: сначала сам изучишь что кчему, попробуешь, попробуешь на вкус, а потом сравнишь, насколько круто кто-то другой решил это, и самое хорошее — тебе будет интересно, почему у него намного круче чем у тебя, короче снова «почуствуй разницу». Дак вот, нуб скорее всего придумает что-то на подобии такого алгоритма, яже тоже был когда-то нубом, я придумал следуйщий алгоритм:
Данный алгоритм отсортирует список. Кому не очевидна «корректность» — «досвидульки и вон отсюдого» (http://mf0.me/wps/2009/10/22/ty-slishkom-blondin-2/) Когда я его придумал, я его обзывал «сортировка паравозом» не помню почему, однако он называется в народе «сортировка выбором». Такой алгоритм работает за O(n2). Оу, я наверно забежал вперёд. Это короче «сложность» алгоритма, так говорят когда понятно итак о чём речь, а обычно это называется «вычислительная сложность». Для тех кто не знает, что такое «сложность» алгоритма, на пальцах, это типо оцценки времени выполнения алгоритма. Зачастую сложно вычислять «сложность» досконально, до мелочей, да и часто это безсмысленно. Такчто первое с чем соглашаются, это оценивать сложность в «худшем случае», то есть подругому сказать: алгоритм работает не медленнее чем за стока-то. Однако логично что на разных машинах (вычислительных), на разных входных данных, время работы алгоритма может быть разным, то есть нужно как-то оценивать не вдаваясь в мелочи. Поэтому вместо точного времени работы, определяют только динамику роста — как быстро растёт время. Динамику роста относительно чего? Относительно некоторых характеристик входных данных, от которых зависит время работы алгоритма, например для сортировки это n = количество элементов списка. Дак вот, g(x)=O(f(x)) — это понятие вообще из матана, а означает оно то, что можно подобрать такое число C, что для всех x будет C*f(x) больше g(x), то есть как бы f(x) полюбому меньше g(x) при таком C, а значит f(x) растёт не быстрее. Называется это Ассимптотической сложностью. Дак вот, судя по алгоритму, можно посчитать, что сравнений делается n+(n-1)+(n-2)+…+2+1=n*(n-1)/2 (арифметическая прогрессия), далее делаем оцценку вверх n*(n-1)/2 < n2/2 = 0.5 * n2. Сдесь 0.5 константа, её можно подобрать, поэтому это всё есть O(n2). Прикинем: если у нас 1 000 элементов, то сравнений нужно сделать порядка 1 000*1 000=1 000 000. Фигня, мало. Если например взять комп с процессором 1GHz, а 1GHz это частота, то есть 1 000 000 000 в секунду, а раз это тактовая частота, то значит ровно 1 000 000 000 тактов в секунду. Операции можно считать выполняются не быстрее чем за один такт, значит 1 000 элементов отсортирует минимум за 0.001 секунды. Действительно фигня, с таким процессором ). Теперь пусть у нас 10 000 элементов, то сравнений порядка 100 000 000, а это 0.1 на 1GHz проце, вроде фигня… всего десятая секунды, однако. А если 100 тысячь? то 10 секунд. Простой пример (это ещё не второй пример, это подпример…) Допустим мы в игре хотим отображать объекты сзадинаперёд, и мы сортируем их для этого, и допустим у нас 25 FPS, это означает что кадр должен обрабатываться за 1/25=0.04 секунды, то есть 10 000 элементов будет лагать это точно ). Но это нужно ещё представить игру в которой столько объектов. Очевидно, что кроме сравнений, во время сортировки ещё другие операции происходят то есть не за 0.1 будет это точно. Но теперь ещё в игре же кроме сортировки ещё много всякой всячины, например видеокарта должна отрисовать, звук должен обновится, может физика, потом ввод с клавы, и т.д. в итоге скорость — очень важная весчь. Есть такая тенденция — сильно не оптимизировать (ускорять алгоритмы), а просто поднимать минимальные требования, и говорить «купи лучше тачку» (комп). |
elektropage.ru
Что такое ЦАП и АЦП? — МикроПрогер
Цифро-аналоговый преобразователь. Аналого-цифровой преобразователь.
Данные устройства в являются «проводниками» между аналоговым и цифровым мирами электричества.
Суть в том, что датчики, двигатели, световые и многие другие устройства для своей работы используют аналоговый сигнал, то есть, например, напряжение с уровнем от 0В до 12В, в то время как цифровые ПЛИСы, микроконтроллеры и микросхемы нуждаются в постоянных уровнях напряжения, например 0В и 5В, представляющих собой логические 0 и 1 соответственно.
Представим, что перед нами поставлена задача управления яркостью светодиода:
- 10 уровней(градаций) яркости свечения светодиода
- максимальное напряжение через светодиод 9В
- управляем с помощью микроконтроллера и двух кнопок «+1 уровень яркости», «-1 уровень яркости»
Итак, светодиод работает на напряжении от 0 до 9В. Нетрудно догадаться, что 10 градаций яркости — это 10 уровней напряжения, которые мы подаем на светодиод — 0В, 1В, … , 9В
Микроконтроллер выдает напряжение либо 0В либо 5В. Но никак не 1В, 3В, 4В или 9В. Зато у микроконтроллера много логических выводов, которые мы можем подключить к ЦАПу и преобразовать логику в аналоговый сигнал.
У цифро-аналогового преобразователя есть, к примеру, 4 входных вывода для подключения логических сигналов и 2 вывода для выходного аналогового напряжения от 0 до 15В — выводы «+» и «-«.
Вот вам и работа ЦАПа: когда мы подаем на все 4 ножки логические 1, то уровень напряжения аналогового выходного сигнала является максимальным(15В в нашем случае), когда подаем 0 — минимальным, то есть 0В
ЦАП. Цифро-аналоговый преобразователь
Теперь самое интересное. У каждого входного вывода ЦАПа есть свой «вес» для выходного сигнала. Например, верхний вывод «весит» 8В(то есть, если подать логическую 1 только на 1й вывод, то на выходе мы получим 8В), следующий ниже 4В, следующий 2В, и последний нижний 1В. Теперь сложите эти цифры и получите 15В.
Нам необходимо получить уровни 0В, 1В, 2В, 3В, 4В, 5В, 6В, 7В, 8В и 9В.
Это значит, что на входы ЦАП на нужно подавать коды в соответствии со следующей таблицей
Напряжение на аналоговом выходе | 0В | 1В | 2В | 3В | 4В | 5В | 6В | 7В | 8В | 9В |
Вход 1, вес 8В | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Вход 1, вес 4В | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
Вход 1, вес 2В | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
Вход 1, вес 1В | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Кнопочки «+1 уровень яркости», «-1 уровень яркости» будут прибавлять или убавлять по 1 единице от выходного цифрового сигнала микроконтроллера. Этот сигнал будет подаваться на входы ЦАП. Выход ЦАП будет подключен к светодиоду. Задача выполнена!
Аналого-цифровой преобразователь работает по обратному принципу. На вход подаем изменяющийся уровень напряжения, на выходе получаем логику(биты) +5В и 0В, либо логические 1 и 0
Поставим задачу снимать показания с датчика температуры:
- датчик показывает температуру от 0С до 30С
- при 0С датчик выдает 0В, при 30С выдает 15В
- сигнал нужно принять на микроконтроллер в цифровом виде (логические 1 и 0, напряжением +5В и 0В)
АЦП имеет два входных вывода для приема аналогового сигнала напряжением, например, от 0 до 15В и, в нашем случае, 4 вывода для выходного цифрового логического сигнала. То есть, четырехразрядного сигнала параллельного кода.
АЦП. Аналого-цифровой преобразователь
Подключаем выход с нашего датчика к аналоговому входу АЦП, а цифровой четырех разрядный выход из АЦП подключаем к микроконтроллеру. И принимаем уже на микрике показания с датчика в цифровом виде. Данные в процесса будут соответствовать таблице ниже:
Напряжение на выходе датчика | Температура | Код с АЦП |
0В | 0С | 0000 |
1В | 2С | 0001 |
2В | 4С | 0010 |
3В | 6С | 0011 |
4В | 8С | 0100 |
5В | 10С | 0101 |
6В | 12С | 0110 |
7В | 14С | 0111 |
8В | 16С | 1000 |
9В | 18С | 1001 |
10В | 20С | 1010 |
11В | 22С | 1011 |
12В | 24С | 1100 |
13В | 26С | 1101 |
14В | 28С | 1110 |
15В | 30С | 1111 |
Автор публикации
не в сети 5 месяцев
wandrys
877 Комментарии: 1Публикации: 31Регистрация: 17-03-2016micro-proger.ru