Pull to refresh
4
2.7
Василий @VasiliyLiGHT

По профессии — грузчик, по призванию — программист

Send message

Самодельные датчики движения (температуры, влажности, освещения) для «Умного Дома» на основе системы MySensors

Reading time2 min
Views70K
Проходил мимо, смотрю, а здесь вещи интересные о самоделках разных пишут. Я тоже недавно кое-что мастерил, дай, думаю, напишу, может кому и пригодится, ну или просто интересно будет. Речь идет о железе бюджетного DIY-датчика для встраивания в панели выключателей и розеток.

Но давайте по порядку.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments26

(Архив) 10 причин попробовать Матрешку

Reading time3 min
Views27K
image

1. Чистый JavaScript и HTML


Многие фреймворки пытаются починить веб, создавая собственный язык программирования. Идея Матрешки проста: с вебом всё в порядке. Вся логика, которую пишет программист, находится, как и должна, в JavaScript файлах, а HTML остаётся языком разметки гипертекста. Шутка об HTML программисте должна остаться шуткой.

2. Минимум сущностей


Матрешка не требует создания избыточных сущностей. Благодаря простому синтаксису привязок, связь между JavaScript и HTML может быть описана там же, где и логика. Программисту не требуется задумываться сразу о нескольких вещах, размышляя о балансе полномочий объектов. Вопрос где прописать обработчик: во “вьюхе” или в контроллере отпадает сам по себе. Хотя, никто не запрещает разделить данные и контроллер, разместив их в разных JS файлах.

3. Работай с данными, забудь о представлении


Попробовав популярный (но уступающий под натиском более современных продуктов) фреймворк Backbone, сталкиваешься с серьезным неудобством: объявляя данные, зависящие от UI и UI, зависящий от данных, вам, как правило, требуется создать два обработчика события. Один ловит изменения данных, второй ловит пользовательские действия. Проблема подкрепляется еще тем, что HTML элементы, как правило, совершенно идентичны в рамках приложения: input, select, кастомные виджеты из jQuery UI могут многократно встречаться на странице. Программисту, который реализует еще одну “единицу” приложения (например, форму), приходится пользоваться “копипастой”.

С Матрешкой всё намного проще. Вам нужно лишь однажды объявить привязку (в одном месте, а не в двух), затем работать с данными (как с обычными JavaScript объектами), забыв, что у нас вообще есть представление.
Читать дальше →
Total votes 43: ↑31 and ↓12+19
Comments37

Контроль версий для дизайнеров

Reading time3 min
Views29K


Давненько мы сюда ничего не писали. Наверное, пришло время восполнить этот досадный пробел. Тем более, что повод более чем достойный.

За прошедшее с последнего поста время сервис PICS.IO превратился в полноценную систему управления медиафайлами. Теперь, помимо фотографий, поддерживаются многие графические форматы, а также видео- и аудио-файлы. Но сегодня речь не об этом, а о том, как мы сами используем сервис в работе.
Читать дальше →
Total votes 26: ↑17 and ↓9+8
Comments23

DataSync API от Яндекс.Диска: облако для приложений и структурированных данных

Reading time5 min
Views28K
Для синхронизации данных в приложениях не подходят обычные «файловые» облачные хранилища. Слишком много проблем с консистентностью данных приходится решать самим авторам приложений. Поэтому сегодня мы открываем всем желающим технологию DataSync API, которую команда Яндекс.Диска разрабатывала для собственных сервисов Яндекса. Она позволяет синхронизировать структурированные данные между облачным хранилищем и устройствами. API использует логин Яндекса, который есть почти у каждого пользователя интернета в России и у многих в других странах. DataSync мультиплатформенный и не завязан только на Android или iOS.



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

Уже более двух лет Яндекс.Браузер работает на технологиях синхронизации Я.Диска. В ближайшем будущем другие крупные сервисы Яндекса начнут объединять свои платформы на DataSync. Под катом — больше подробностей о том, как он устроен, зачем нужен, и примеры, на которых можно посмотреть и попробовать, как всё работает.
Читать дальше →
Total votes 56: ↑55 and ↓1+54
Comments20

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть первая

Reading time29 min
Views834K

О чем данный учебник


Данный учебник представляет собой что-то типа «штампа моей памяти» по языку SQL (DDL, DML), т.е. это информация, которая накопилась по ходу профессиональной деятельности и постоянно хранится в моей голове. Это для меня достаточный минимум, который применяется при работе с базами данных наиболее часто. Если встает необходимость применять более полные конструкции SQL, то я обычно обращаюсь за помощью в библиотеку MSDN расположенную в интернет. На мой взгляд, удержать все в голове очень сложно, да и нет особой необходимости в этом. Но знать основные конструкции очень полезно, т.к. они применимы практически в таком же виде во многих реляционных базах данных, таких как Oracle, MySQL, Firebird. Отличия в основном состоят в типах данных, которые могут отличаться в деталях. Основных конструкций языка SQL не так много, и при постоянной практике они быстро запоминаются. Например, для создания объектов (таблиц, ограничений, индексов и т.п.) достаточно иметь под рукой текстовый редактор среды (IDE) для работы с базой данных, и нет надобности изучать визуальный инструментарий заточенный для работы с конкретным типом баз данных (MS SQL, Oracle, MySQL, Firebird, …). Это удобно и тем, что весь текст находится перед глазами, и не нужно бегать по многочисленным вкладкам для того чтобы создать, например, индекс или ограничение. При постоянной работе с базой данных, создать, изменить, а особенно пересоздать объект при помощи скриптов получается в разы быстрее, чем если это делать в визуальном режиме. Так же в скриптовом режиме (соответственно, при должной аккуратности), проще задавать и контролировать правила наименования объектов (мое субъективное мнение). К тому же скрипты удобно использовать в случае, когда изменения, делаемые в одной базе данных (например, тестовой), необходимо перенести в таком же виде в другую базу (продуктивную).
Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments18

Аппаратный зал (про инфраструктуру спутниковой сети и осциллограф)

Reading time12 min
Views30K
В прошлом посте я показывал, как выглядит земная станция спутниковой связи снаружи. Теперь давайте немного посмотрим на теорию, плюс спустимся вниз в аппаратный зал. Кабели ПЧ, которые мы видели в контейнерах, приходят сюда. Ну, или уходят отсюда, у нас же «приём» и «передача».



Всё начинается и заканчивается антенной:



Антенна, кроме, собственно, зеркала и облучающей системы, имеет в своём составе волноводные тракты, МШУ и (по варианту) систему автосопровождения, антиобледенения, осушки волноводного тракта. Осторожно, трафик.
Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments19

Полная энергетическая автономия или как выжить с солнечными батареями в глубинке (часть 4. Сделано в России)

Reading time6 min
Views119K


В России есть вся инфраструктура и собственные средства для построения солнечной электростанции в конкретно взятом хозяйстве. Более того, вся необходимая электроника, да и солнечные батареи производятся у нас самостоятельно и все это отлично работает. После экспериментов с ноунеймом, брендовым европейским китаем и прочей техникой, я решил обратиться к российским разработчикам техники для автономки и на себе испытать эти устройства. Первым попал на тест гибридный инвертор МАП HYBRID v.1 24В: 4.5 кВт , а следом за ним пойдет производительный солнечный MPPT-контроллер.



Даёшь свет!
Total votes 43: ↑37 and ↓6+31
Comments87

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть вторая

Reading time31 min
Views339K

Вступление и DDL – Data Definition Language (язык описания данных)


Часть первая — habrahabr.ru/post/255361

DML – Data Manipulation Language (язык манипулирования данными)


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

Рассказывать про DML я буду по своей последовательности выработанной на личном опыте. По ходу, так же постараюсь рассказать про «скользкие» места, на которые стоит акцентировать внимание, эти «скользкие» места, схожи во многих диалектах языка SQL.

Т.к. учебник посвящается широкому кругу читателей (не только программистам), то и объяснение, порой будет соответствующее, т.е. долгое и нудное. Это мое видение материала, которое в основном получено на практике в результате профессиональной деятельности.

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

Т.к. DML в диалекте БД MS SQL очень сильно связан с синтаксисом конструкции SELECT, то я начну рассказывать о DML именно с нее. На мой взгляд конструкция SELECT является самой главной конструкцией языка DML, т.к. за счет нее или ее частей осуществляется выборка необходимых данных из БД.
Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments11

Разработка кроссплатформенного приложения с помощью Ionic Framework

Reading time12 min
Views84K
image

Всем привет! Не так давно в одном из комментариев я пообещал написать вводную статью для быстрого знакомства с возможностями Ionic Framework (далее IF). Стараюсь сдерживать свои обещания. Для начала мне хотелось бы выложить список ссылок, которыми часто пользуюсь при разработке с помощью IF:


Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments17

История одного выхода в космос

Reading time8 min
Views36K


Создавать космические корабли интересно. Интересно программировать автономные системы — что могут совершить посадку на астероиде, или выйти на орбиту Венеры. Космос интересен.

В эти выходные (5 апреля) Продленка была посвящена космонавтике. Перед этим, когда я узнал, что будет космическая тематика — решил найти 3д модель корабля Восток-1, того самого на котором Гагарин совершил тот исторический полет вокруг Земли — найти модель этого корабля для печати на 3д принтере — для демонстрации ребятам.

Но к своему удивлению сходу найти не удалось…

И возможно это было к лучшему, так как привело к самостоятельному созданию модели — о том как создать космический корабль за час в Екатеринбурге, напечатать на 3д принтере в Москве, подарить модельки школьнику и космонавту на выступлении в Digital October, а потом создать симулятор корабля в космосе и по-управлять им и будет этот рассказ.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments9

Как я делал Torrent-Box на Raspberry Pi

Reading time2 min
Views100K

Торрент-бокс


Этот девайс на базе Raspberry Pi Model B был предназначен сначала для скачивания и раздачи торрентов, а затем появилась идея повесить туда же функции e-Mule-совместимой качалки и TOR-анонимайзера.

Вначале я думал использовать в качестве бесшумной и малопотребляющей торрентокачалки медиацентр Iconbit hds6l, подключенный по Wi-Fi к роутеру. Но быстро выяснилось, что кириллицу в названиях файлов он понимает плохо, да и Wi-Fi часто отвисает намертво, так что помогает только выключение питания.

В результате моих изысканий появилась вот такая конструкция:

image
Читать дальше →
Total votes 26: ↑19 and ↓7+12
Comments51

Приемы при проектировании архитектуры игр

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

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

В публикации рассматриваются следующие темы:
  • Наследование VS компоненты
  • Сложные иерархии классов юнитов, предметов и прочего
  • Машины состояний, деревья поведений
  • Абстракции игровых объектов
  • Упрощение доступа к другим компонентам в объекте, сцене
  • Сложные составные игровые объекты
  • Характеристики объектов в игре
  • Модификаторы (баффы/дебаффы)
  • Сериализация данных

Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments30

Создание мультиплеерного 3D-шутера на Webgl без опыта и денег

Reading time9 min
Views35K
Это первая часть истории о том, как маленькая команда веб-разработчиков разработала мультиплеерный 3d-шутер без опыта в геймдеве, больших денег и штата сотрудников.

Дисклеймер: некоторые описанные в статье решения могут вызывать фейспалм.




2011 год. С чего все началось


В 2011 году мы были маленькой питерской веб-студией из 4 человек. Тимлид/сеошник, программист (вернее считал себя программистом), дизайнер и менеджер по продажам. На тот момент тимлид и программист занимались сайтами уже 3 года, но особых успехов на этом поприще не достигли. Хотя мы имели уже несколько постоянных клиентов на продвижении и обслуживании, но львиную долю дохода съедали налоги, аренда офиса и прочие расходы. Оставшихся копеек на четырех человек явно не хватало. Хроническое безденежье и отсутствие перспектив угнетали. Дизайнер уже навострил лыжи, да и остальные члены команды едва держались. Вот в такой обстановке и пришла в голову потрясающая по наивности мысль: «чего это мы все для всяких дядь делаем проекты, а давайте свое что-нибудь сделаем, например, игру браузерную и запилим её во вконтакте». Все, кроме дизайнера, восприняли идею с воодушевлением.
Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments23

Unity 3d 4.6 (5) проект Survival shooter game на русском

Reading time2 min
Views27K
Здравствуйте!

Сегодня мы приступаем к изучению и сборке готового проекта от команды Unity 3d под названием Survival Shooter.

При детальном изучении проекта мы коснемся таких игровых аспектов в изучении, как новая UI (версия Unity 3d 4.6), создание скриптов для движения камеры, управления игровым персонажем, точки спауна врагов и многое другое.

Рассмотрим виды анимации и ее логического применения с помощью Animator Controller.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments2

Как оценивать работу программиста? Мнение сотрудников Яндекса

Reading time7 min
Views59K
Давно идут споры о том, что такое работа программиста — ремесло, навык или искусство. При этом постоянно встаёт вопрос оценки результата. О том, как разные разработчики и руководители в Яндексе подходят к вопросу оценки работы программиста, мы поговорим в этом посте.



В Яндексе работают сотни программистов, и результаты их работы влияют на сервисы, которыми пользуются миллионы людей. Когда на тебе такая ответственность, нужно уметь остановиться и оценить, что можно сделать лучше, в чем ты сильнее всего и где эти твои навыки пригодятся еще. Для этого надо уметь оценить и свою работу, и работу людей, с которыми ты вместе что-то создаешь. О том, как это делать, мы и спросили наших коллег.
Читать дальше →
Total votes 66: ↑48 and ↓18+30
Comments47

Напильники бывают разные или повествование про «напильник» для java программ

Reading time6 min
Views22K
В практике java программиста бывает, что очень хочется изменить поведение программы или «подхачить» пару классов без перепаковки приложения, собрать метрики или протестировать java приложение в недрах сторонней библиотеки или jdbc драйвера без исходного кода. Существует несколько способов сделать это. Я расскажу про open source проект aspectj-scripting, который позволяет решать такие задачи в jvm.



Рассказ про aspectj-scripting будет в нескольких публикациях. Начнем с практики! Под катом модификация поведения maven-changes-plugin без его пересборки и перекомпиляции для выгрузки списка задач из JIRA в файлы xml и json
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments16

Расширение функциональности элементов управления Windows с помощью AttachedProperty

Reading time4 min
Views11K


Краеугольным камнем разработки приложений для Windows (WPF, SilverLight, WP, WinRT) является паттерн MVVM. Который основан на концепции связывания данных модели представления и пользовательского интерфейса, что позволяет, используя декларативное описание UI посредством XAML избавится от codebehind (так я и не придумал/нашел русского перевода) и перенести всю логику работы с пользовательским интерфейсом в модель представления.

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

Написать данную статью меня побудила статья «Автоматическое выделение ссылок в универсальных приложениях Windows». В статье найдено решение конкретной проблемы и предложено работающее решение. Однако для его использования необходимо в codebehind для каждого текстового блока вызывать код. Более того если данные предполагают изменение в процессе работы необходимо следить за их изменением. В процессе своей работы такие решения встречаю довольно часто, они отличаются реализацией, но их все отличает одно неизменное свойство, сложность поддержки и сопровождения кода.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments14

Самовосстанавливающиеся предохранители. Мифы и реальность

Reading time9 min
Views189K
В комментариях к моей прошлой статье о способах защиты от неправильного подключения полярности источника питания меня неоднократно корили за то, что не упомянул способ защиты с использованием самовосстанавливающегося предохранителя. Чтобы исправить эту несправедливость поначалу хотел просто добавить в статью дополнительную схему защиты и короткое к ней пояснение. Однако решил, что тема самовосстанавливающихся предохранителей заслуживает отдельной публикации. Дело в том, что устоявшееся их название не слишком отражает суть вещей, а копаться в даташитах и разбираться в принципе работы при применении таких “элементарных” компонентов, как предохранитель, часто начинают уже после того, как начала глючить первая партия плат. Хорошо если не серийная. Итак, под катом вас ждёт попытка разобраться, что же это за зверь такой PolySwitch, оригинальное название, кстати, лучше отражает суть прибора, и понять с чем его едят, как и в каких случаях имеет смысл его использовать.

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

Защита от прослушивания разговоров — строим безопасную SIP телефонию своими руками

Reading time7 min
Views75K
image
Привет, Хабр!
В этот раз хочу рассказать о технологиях шифрования VoIP звонков, о том какую защиту дают разные подходы и как организовать наиболее защищенную от прослушивания голосовую связь с технологическими гарантиями безопасности.
В статье я постараюсь доступно изложить особенности таких технологий как SIP\TLS, SRTP и ZRTP. И продемонстрирую конкретные схемы использования на примере нашего сервиса ppbbxx.com

Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments9

Information

Rating
1,281-st
Registered
Activity

Specialization

Software Developer, Backend Developer
Middle
C#
.NET
SQL
REST
Git