Pull to refresh
1
0
Send message

Четыре способа извлечения значений из скрытых полей в C#

Reading time4 min
Views38K
Добрый день. Не так давно на хабре проскакивала статья, в которой показывалась возможность обращения к закрытым полям объекта из другого экземпляра того же класса.

public class Example
{
  private int JustInt;

  // Some code here

  public void DoSomething(Example example)
  {
    this.JustInt = example.JustInt; // Вполне валидная строка, некоторых удивляет
  }
}

Почему бы не пойти дальше, и не забирать данные из скрытых полей иных классов?
Total votes 20: ↑18 and ↓2+16
Comments27

Бесплатная магистратура в одном из топовых вузов мира: Италия

Reading time6 min
Views24K
Честно сказать, до того как я решил поехать в Италию я все время путал какая страна в Европе в форме сапога: Италия или Испания. Также я считал, что Италия это страна для того, чтобы загорать на солнышке и купаться :) а работать или учиться надо в Германии, Нидерландах, Англии, США или в Скандинавии.

В этой статье я хочу рассказать, как я поступал в один из топовых университетов мира и Европы — Politecnico di Milano (22 место в мире в этом рейтинге технических вузов, к примеру Баумка и МГУ находятся намного ниже: между сотым и двухсотым местом).

Может быть мне повезло, но у меня сложилось впечатление, что поступить в Политех в магистратуру CS на платное очень просто и не супер дорого (до скачка евро в 2014 — 160т.р. в год). Получить scholarship на обучение довольно просто, а получить scholarship оплачивающий еще и жилье — вполне реально, даже если ты ни чем особо не выделяешься.
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments24

Smart плинтус 1.0

Reading time3 min
Views75K


Озаботила меня одна проблема – темный коридор по пути из спальни на кухню. Ну, знаете, люблю ночью на кухню ходить, но в потемках некомфортно, а т.к. коридор относительно ширины достаточно длинный, то велика вероятность отклонения от маршрута при ориентировании по встроенным в голову гироскопам. Ошибка накапливается, да еще ноги разной длины, ходил с вытянутыми руками и попадал в дверной проем не с первого раза.
Да, конечно есть всякие ночники, датчики движения, умные дома, но у меня есть лучше, у меня есть пластиковый плинтус с кабельным каналом.
Поэтому возникла идея запихать туда светодиодную ленту и посмотреть, как она там себя будет чувствовать и получилось, знаете ли, довольно круто, такая подсветочка, как в космических кораблях.
Читать дальше →
Total votes 107: ↑104 and ↓3+101
Comments177

Ускоряем свою Arduino

Reading time3 min
Views201K
Месяца 3 назад, как и многие горе-электроники, купил себе на мой тогдашний взгляд самую навороченную микропроцессорную плату из семейства Arduino, а именно Seeeduino Mega, на базе процессора Atmega1280. Побаловавшись всласть вращающимся сервоприводом и моргающим светодиодом, встал вопрос: «зачем же я её купил?».

Я работаю одним из ведущих конструкторов на одном крупном военном Зеленоградском заводе, и в данный момент веду проект по разработке метрологического средства измерения. В данной задаче существует бесконечное множество проблем, которые требуют индивидуального решения. Одной из таких задач является управление шаговым двигателем без шумов и с шагом не 1.8 градуса, как сказано в документации шагового двигателя, а до 0.0001 градуса. Казалось бы, задача сложна и нерешабельна, но, повозившись немного со схемами управления, пришёл к выводу, что всё реально и возможно. Требуется только генерация двух сигналов специфичной формы и со сдвигом фаз и частотой изменения напряжения до 1 МГц. (Подробное исследование шагового мотора и раскрытие всех тайн управления напишу в следующей статье) Сразу же в голове стали появляться проблески надежды, что я не зря потратил 1500 рублей на свою красненькую Seeeduino, и я, набравшись энтузиазма, начал разбираться.
Читать дальше →
Total votes 59: ↑46 and ↓13+33
Comments70

Процедурная генерация случайных игровых подземелий

Reading time6 min
Views64K
image

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

Оригинальное описание алгоритма


1. Сначала я задаю нужное количество комнат – к примеру, 150. Естественно, цифра произвольная, и чем она больше, тем сложнее будет подземелье.

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

Вместо равномерно распределённых случайных чисел (какие выдаёт генератор Math.random в большинстве языков), я использую нормальное распределение Парка-Миллера. В результате вероятность появления маленьких комнат превышает вероятность появления больших. Зачем это надо, объясню позже.

Кроме того я проверяю, что соотношение длины и ширины комнаты не слишком велико. Нам не нужны как идеально квадратные комнаты, так и сильно вытянутые.

3. И вот у нас есть 150 случайных комнат, расположенных на небольшом пространстве. Большинство из них наезжают друг на друга. Теперь мы осуществляем их разделение по технологии separation steering, чтобы разделить прямоугольники так, чтоб они не пересекались. В результате они не пересекаются, но находятся достаточно близко друг от друга.

4. Заполняем промежутки клетками размером 1х1. В результате у нас получается квадратная решётка из комнат различного размера.

5. И тут начинается основное веселье. Определяем, какие из клеток решётки являются комнатами – это будут любые клетки с шириной и высотой, превышающими заданные. Из-за распределения Парка-Миллера мы получим сравнительно небольшое количество комнат, между которыми есть довольно много свободного пространства. Но оставшиеся клетки нам также пригодятся.

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

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

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

9. Чтобы превратить его в коридоры, для каждого ребра строится серия прямых линий (в форме Г), идущих по рёбрам графа, соединяющим комнаты. Тут нам пригождаются те клетки, которые остались неиспользованными (те, что не превратились в комнаты). Все клетки, накладывающиеся на Г-образные линии, становятся коридорами. А из-за разнообразия размеров клеток стены коридоров будут неровными, что как раз хорошо для подземелья.

И вот пример результата!

Осторожно — под катом много монстров анимированных гифок!
Читать дальше →
Total votes 53: ↑49 and ↓4+45
Comments16

Аппаратный ускоритель нейросети подключается по USB

Reading time2 min
Views16K


Американская компания Movidius известна как разработчик аппаратного ускорителя нейросетей Myriad 2 VPU и поставщик микросхем для системы искусственного интеллекта GoogleNet.

После оптимизации и подготовки бинарника в фирменном фреймворке Fathom Deep Learning Software Framework нейросеть эффективно работает на ускорителе Myriad 2 с энергопотреблением менее 1 Вт. Такие микросхемы идеально подходят для роботов, мультикоптеров, смартфонов, видеокамер наблюдения, шлемов дополненной реальности — любых гаджетов, где пригодится распознавание объектов, распознавание речи, трекинг объектов, навигация и т.д.

Одновременно с фреймворком Fathom компания Movidius сегодня на саммите Embedded Vision Summit в Калифорнии впервые показала публике ускоритель-на-флешке Fathom Neural Compute Stick — первый в мире прибор такого рода. Здесь вообще всё сразу готово к применению. Флэшка со встроенным ускорителем Myriad 2 просто вставляется в любое устройство с USB-портом.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments13

Умный дом. Разбираемся с проектированием цепи низкого напряжения системы

Reading time2 min
Views12K

Принцип подключения HDL Buspro к локальной сети


Различные подсети можно соединять путем создания локальной сети (UDP/IP) через шинный коммутатор (не более 255 подсетей). В некоторых случаях рекомендуется использовать для локальной сети кольцевую топологию для увеличения надежности всей структуры.

Настройка устройств с функцией коммутатора


Итак, возьмем несколько устройств, которые можно использовать в качестве коммутатора. Пусть это будут:
  • однопортовый шинный коммутатор;
  • хост управления гостиничным номером: 48-канальный хост-контроллер;
  • 48-канальный DMX контроллер сцен с Ethernet портом;
  • 512-канальный DMX-контроллер сцен;
  • GPRS-контроллер сообщений (SMS-модуль);
  • модуль фоновой музыки.
Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments3

3D революция на Arduino

Reading time5 min
Views17K
image

До последнего момента контроллеры (и Ардуино, в частности) работали либо вообще без интерфейса, либо с примитивными интерфейсами, условно говоря, с одной — двумя кнопками. С появлением Arduino Mega Server ситуация кардинально изменилалась и появилась возможность сделать любой интерфейс к вашему проекту на Ардуино.

Сегодня мы пойдём ещё дальше и поговорим о том, как сделать полноценный интерактивный 3D интерфейс для вашего проекта на Ардуино. Все эксперименты будем проводить на новом микроконтроллере Genuino 101 совместного производства Intel и Arduino и любезно предоставленным компанией Intel для портирования на него системы Arduino Mega Server.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments5

Реинкарнация «народной» платы TP4056 или самодельная зарядка для лития на 3А

Reading time6 min
Views118K
Всех приветствую, кто заглянул на огонек. Речь в обзоре пойдет, как вы наверно уже догадались, об одной интересной модификации «народного» зарядного модуля TP4056 на ток 3А и небольшом применении в качестве самодельной зарядки для лития. Будет небольшое тестирование и простенький пример изготовления зарядки из дешевых компонентов, поэтому, кому интересно, милости прошу под кат.

Итак, вот та самая модификация «народной» платки:


Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments51

Беспроводной адаптер для программирования Arduino или AVR с загрузчиком на базе ESP8266

Reading time3 min
Views21K
Небольшая заметка о самодельном адаптере на базе ESP8266, позволяющем загрузить прошивку в микроконтроллер с установленным UART загрузчиком или Arduino.
Последнее время при проектировании устройств на микроконтроллерах AVR, для программирования вывожу только один 6-пиновый разъем (не ISP) для FTDI адаптера. Он позволяет и загрузить прошивку, и отладиться по UART после прошивки. Именно так сделано в Arduino, идея позаимствована оттуда. Это удобно.
Тем временем, не раз приходилось сталкиваться с ситуацией, когда нужно загрузить прошивку в микроконтроллер, но он уже в корпусе который не помещается на рабочем месте/лежит на антресоли/в другом городе/замурован в стену. В таких случаях адаптер FTDI не применим из-за короткого USB шнурка и приходилось изворачиваться с ноутбуком. Задумался о беспроводном программаторе. Тут как нельзя лучше подойдет ESP8266, ведь он обладает UART и в любом исполнении имеет хотя бы один GPIO, пригодный для перезагрузки контроллера и входа в режим программирования.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments33

Повесть о создании классической RTS в домашних условиях с нуля + разбор основных этапов разработки (AI, сеть и т.д.)

Reading time38 min
Views75K
image

В статье речь пойдет об одном очень не новом проекте, который создавался совсем в другое время и совсем в других условиях. Это моя старенькая RTS под названием Земля онимодов (Onimod land). Чтобы было сразу понятно, что она собой представляет, можно посмотреть коротенькое видео:
Читать дальше →
Total votes 117: ↑116 and ↓1+115
Comments119

Об измерении скорости потока жидкостей и газов

Reading time6 min
Views29K
В нынешнем году мы начали представлять в России компанию IST — швейцарского производителя тонкопленочных датчиков температуры, относительной влажности, проводимости жидкости и скорости потока.

Продукция IST — это не масс-маркет, они не выпускают аналоги DHT22 миллионные тиражи дешевых микросхем для стандартных применений. Вместо этого упор делается на специальные задачи: нестандартные конструктивы и диапазоны температур, повышенная точность, минимальное время отклика и так далее.

Среди многообразной продукции IST есть такая интересная штука как flow sensors — датчики скорости потока сплошных сред. Под катом рассказываю как они работают, как выглядят и зачем нужны. Думаю что это будет интересно не только разработчикам расходомеров.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments14

Unity и «Помогаторы» для редактора

Reading time5 min
Views37K


В этой статье опишу несколько полезных возможностей и реализаций, которые мне помогли в разработке. Unity уже имеет множество методов чтобы не только «дебажить логами», но и расширять, дорисовывать необходимые данные в окне редактора. Если вы новичок в Unity или вам захотелось освежить знания – «Нужно брать!».
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments11

«Щадящая» балансировка между несколькими провайдерами на офисном шлюзе

Reading time9 min
Views21K
Эта статья описывает конфигурацию шлюза под управлением Linux для балансировки трафика между каналами разных провайдеров.


Результат, достигаемый в этом руководстве, отличается от результата подобных руководств: для каждого клиента используется один и тот же внешний IP-адрес, что избавляет от проблем с интернет-сервисами, которые не готовы к смене IP-адреса клиента в рамках одной сессии.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments19

Простой цифровой термометр/гигрометр на AM2302 (DHT22), ATtiny13 и MAX7219

Reading time20 min
Views42K
Цифровой датчик температуры и влажности AM2302 (DHT22) достаточно популярен в сегменте DIY, так как при невысокой стоимости (если рассматривать реплики, сделанные в Китае) он обеспечивает неплохую точность измерений и весьма прост в подключении (три провода, включая питание). Однако, большинство примеров использования этого датчика рассчитаны на Arduino и написаны на языке программирования С/С++. Это прекрасно подойдет, если вы хотите ознакомиться с функционалом датчика или «по-быстрому» прикрутить термометр к уже существующему устройству. Но если же вы хотите собрать именно термометр/гигрометр и только его, использование целой платы Arduino (или просто большого МК с парой десятков выводов) вполне справедливо может показаться излишним.

В данной статье пойдет речь о простом термометре/гигрометре (далее – просто термометре), выполненном на одном из самых «маленьких» микроконтроллеров — ATtiny13 с весьма скромными характеристиками – 1Кб программной памяти, 64 байтами ОЗУ и 5-ю (6-ю, если отключить вывод сброса) интерфейсными выводами. В статье предполагается, что читатель уже немного знаком с микроконтроллерами AVR и их программированием, но статья, в основном, ориентирована на новичков в этой области. Кстати, о языке программирования – программа термометра полностью написана на ассемблере.

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments35

Универсальный скрипт переключения 2-х каналов интернета Mikrotik

Reading time8 min
Views65K
Около 2,5 лет назад писал статью на тему автоматического переключения канала Интернет на резервный. Скрипт, конечно, и по сей день работает «на отлично», но его внешний вид и некоторые нюансы…

Итак, встала задача улучшить скрипт, максимально устранив побочные эффекты. Что ж, приступим.

image
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments34

Лазерный гравировщик на основе деталей CD-ROM приводов и Arduino mega

Reading time2 min
Views43K


Пользователь YouTube с ником NeumiElektronik использовал старые CD-ROM приводы (сервоприводы и некоторые другие детали), лазерный диод на 150 мВт и 405 нм и Arduino mega для создания лазерного гравировщика. Центральная платформа движется под управлением Arduino, а лазер выжигает на поверхности детали схемы и узоры, заданные мастером. При этом самым интересным вариантом использования такого механизма является создание печатных плат с фоторезистом.

Лазер убирает участки пленки, и схема затем протравливается в обычном растворе. Результат — почти идеальная печатная плата небольшого размера. Автор проекта сообщает, что он потратил на все про все около $61 доллара. Все остальные детали он взял из своих запасников или просто нашел. Гравировщик работает с такими материалами, как бумага, кожа, пластик, дерево, поролон. Для работы с каждым типом материала необходимо установить время экспозиции для лазера.
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments57

Исправляем ошибки установки обновлений Windows 7

Reading time6 min
Views260K
Windows 7 по-прежнему остается популярной операционной системой в корпоративной среде, несмотря на то, что уже вышли две новые версии клиентских ОС. Расширенная поддержка «семёрки» закончится лишь 14 января 2020 г., а это значит, что ближайшие 4 года для нее будут выходить обновления, исправляющие обнаруженные уязвимости.

Существует правило – если есть обновления, то есть и проблемы с их установкой. Давайте разберем, какие основные проблемы возникают при обновлении Windows 7 через Windows Server Update Services (WSUS) и как их исправить с наименьшими затратами.

Осторожно, настоящая уличная магия!
Total votes 22: ↑19 and ↓3+16
Comments20

Компания MobilECG встроила open-source пульсометр в визитку

Reading time1 min
Views10K


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

Компания MobilECG создала высокотехнологичную визитку со встроенным пульсометром. При этом электронная схема устройства выложена в открытом доступе и не защищена авторским правом. Для того, чтобы считать собственный пульс при помощи такой визитки, нужно просто приложить пальцы к электродам на карточке.
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments14
1
23 ...

Information

Rating
Does not participate
Registered
Activity