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

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

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

Корпоративная шизофрения

Время на прочтение13 мин
Количество просмотров160K
— Последний вопрос нашей повестки. – зашуршала бумажками Светлана Владимировна. – Оценка удовлетворенности персонала. Татьяна, вам слово.

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

Татьяна выдержала театральную паузу, оглядывая всех присутствующих менеджеров – и топ, и не топ.

— Удовлетворенность стала ниже, по сравнению с прошлым годом. – видя, что реакции нет, сконфуженно продолжила Татьяна. – С этим нужно что-то делать. Я подготовила несколько предложений. Светлана Владимировна, можно озвучить?

— Начинается… — раздался тихий шепот с дальнего конца стола.

— Что, простите? – подняла бровь директор. – Я что, с разнорабочими разговариваю? Или с руководителями, которые радеют за благо предприятия? Марина, это вы сейчас сказали?

— Нет, не я. – возмутилась Марина, директор по качеству. – Вон, умник наш. Господин ИТ-директор. Сергей, отвлекись от телефона, что ты там все время делаешь?
Читать дальше →
Всего голосов 231: ↑208 и ↓23+185
Комментарии161

Зарплаты ИТ-специалистов на середину 2018 года

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

Публикуем второй отчет зарплатного сервиса «Моего круга». Отчёт построен на данных по 7900+ зарплатам, внесенных нашими пользователями за последние полгода. 70% зарплат внесено разработчиками, остальные — администраторами, тестировщиками, менеджерами, аналитиками, дизайнерами, эйчарами, маркетологами и специалистами поддержки.

В этот раз мы не только посмотрим текущие зарплаты по основным ИТ-специализациям, языкам программирования и компаниям, но также увидим полугодовую динамику некоторых из них.
Читать дальше →
Всего голосов 104: ↑104 и ↓0+104
Комментарии275

Делаем «умный» контроллер для кондиционера на ESP8266

Время на прочтение5 мин
Количество просмотров68K
Наступило лето, с ним — жара, а также время включать кондиционеры. А если вы увлекаетесь современными технологиями и умным домом, то управление кондиционерами хочется делать как-то по-умному (или хотя бы по-современному). Ниже — ряд заметок о моей попытке интегрировать погоду в доме с голосовым управлением и кросс-платформенным интерфейсом.

Задача


В квартире стоят четыре кондиционера, ими нужно научиться управлять:

  • Из веб-интерфейса (у меня это Home Assistant, крутящийся на отдельном Raspberry Pi, но в идеале хочется простого подключения к любой системе);
  • Голосом (Google Assistant подойдёт, потом подумаем об Алисе);
  • Скриптами;
  • Дёшево...

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

Создание архитектуры программы или как проектировать табуретку

Время на прочтение25 мин
Количество просмотров693K
Взявшись за написание небольшого, но реального и растущего проекта, мы «на собственной шкуре» убедились, насколько важно то, чтобы программа не только хорошо работала, но и была хорошо организована. Не верьте, что продуманная архитектура нужна только большим проектам (просто для больших проектов «смертельность» отсутствия архитектуры очевидна). Сложность, как правило, растет гораздо быстрее размеров программы. И если не позаботиться об этом заранее, то довольно быстро наступает момент, когда ты перестаешь ее контролировать. Правильная архитектура экономит очень много сил, времени и денег. А нередко вообще определяет то, выживет ваш проект или нет. И даже если речь идет всего лишь о «построении табуретки» все равно вначале очень полезно ее спроектировать.

К моему удивлению оказалось, что на вроде бы актуальный вопрос: «Как построить хорошую/красивую архитектуру ПО?» — не так легко найти ответ. Не смотря на то, что есть много книг и статей, посвященных и шаблонам проектирования и принципам проектирования, например, принципам SOLID (кратко описаны тут, подробно и с примерами можно посмотреть тут, тут и тут) и тому, как правильно оформлять код, все равно оставалось чувство, что чего-то важного не хватает. Это было похоже на то, как если бы вам дали множество замечательных и полезных инструментов, но забыли главное — объяснить, а как же «проектировать табуретку».

Хотелось разобраться, что вообще в себя включает процесс создания архитектуры программы, какие задачи при этом решаются, какие критерии используются (чтобы правила и принципы перестали быть всего лишь догмами, а стали бы понятны их логика и назначение). Тогда будет понятнее и какие инструменты лучше использовать в том или ином случае.

Данная статья является попыткой ответить на эти вопросы хотя бы в первом приближении.
Читать дальше →
Всего голосов 88: ↑85 и ↓3+82
Комментарии45

Золотое правило git rebase

Время на прочтение4 мин
Количество просмотров30K
Всем привет!

Мы тут немного переделали наш курс посвящённый web-разработке и добавили ещё целый месяц изучения JS. Ну и как обычно у нас — рассмотрим что-нибудь интересное, что разбирается у нас на курсе. В данном случае — git rebase.

Поехали.

Что на самом деле происходит во время git rebase, и почему вас должно это волновать.

Основы rebase-а

Таким вы могли бы представить себе rebase в git:


Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии18

Открытый вебинар: «Трудности перевода: 2 и 3 версии»

Время на прочтение1 мин
Количество просмотров1.4K
Всем привет!

В рамках нашего курса «Разработчик Python», провели на прошлой неделе открытый вебинар про вторую и третью версию. На нём создатель курса Стас Ступников разбирал нюансы миграции между версиями, отличия в производительности, новые особенности, да и вообще общался и отвечал на вопросы слушателей.


Как всегда ждём вопросы, комментарии тут или на дне открытых дверей.
Всего голосов 13: ↑11 и ↓2+9
Комментарии0

Открытый вебинар «Асинхронное программирование в Python»

Время на прочтение1 мин
Количество просмотров4.9K
Всем привет!

Андрей Кравчук, преподаватель курса «Разработчик Python», провёл на прошлой неделе открытый урок на тему «Асинхронное программирование в Python», где, собственно, разбирались с организацией асинхронной обработки данных под высоконагруженные системы.


Как всегда ждём комментарии и вопросы здесь или можно зайти с ними к нам на день открытых дверей.
Всего голосов 12: ↑10 и ↓2+8
Комментарии1

Kivy — фреймворк для кроссплатформенной разработки №1

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

В мире кроссплатформенной разработки под мобильные платформы сейчас, наверное, как это не прискорбно, доминируют два фреймворка — Xamarin и React Native. Xamarin — потому что является «приемным сыном» компании Microsoft и, гордо размахивая костылями, активно пиарится последней, а React Native — отпрыск не менее известной Facebook, который с не меньшей долей гордости отращивает бороды уставшим на нем разрабатывать программистам. Для себя я уже давно нашел альтернативу, а тех, кто еще не знаком с фреймворком для кроссплатформенной разработки Kivy, добро пожаловать под кат…
Читать дальше →
Всего голосов 37: ↑26 и ↓11+15
Комментарии119

Сравнение сортировок обменами

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


Сферические алгоритмы в вакууме — это прекрасно. Однако давайте спустимся с небес на грешную землю и посмотрим как вся эта теоретическая красота покажет себя на практике.
Сравнение сортировок обменами
Всего голосов 15: ↑11 и ↓4+7
Комментарии14

Климатическая система в квартире своими руками

Время на прочтение21 мин
Количество просмотров108K
Кто-то в детстве мечтает изобрести лекарство от рака, кто-то — стать космонавтом или владельцем свечного заводика. А я мечтал о том, что у меня появится климатическая система, и в квартире, наконец, не будет душно, вечная простуда от сквозняков исчезнет, а горло перестанет першить от сухости. И теперь мечта исполнена!

Примерно с декабря 2015 по июнь 2016 года я читал форумы, катался по строительным магазинам, собирал систему в квартире и на балконе, паял контроллер и писал прошивку — и добился своего.

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

Схема установки
А если чуть подробнее, то...
Всего голосов 87: ↑84 и ↓3+81
Комментарии290

Климатическая система в квартире своими руками — часть 2

Время на прочтение5 мин
Количество просмотров29K
В июне 2016 года я опубликовал статью «Климатическая система в квартире своими руками», вызвавшую положительную реакцию сообщества. Тогда я только что собрал климатическую систему, не успел её протестировать, и вообще был немножко в эйфории от своей победы над оборудованием и материалами.

Сейчас, два года спустя, я решил написать об опыте использования системы. Вкратце, всё работает, но потребовало некоторого доведения до ума, а именно:
Читать дальше →
Всего голосов 49: ↑49 и ↓0+49
Комментарии76

Кроссплатформенная утилита мониторинга SNMP-трафика без зависимостей и наличия GUI

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

Здравствуй, Хабр!


В процессе своей работы (администрирование активного оборудования) столкнулся с необходимостью оперативного получения онлайн-данных (желательно с графиком) входящего/исходящего трафика на сетевом интерфейсе по SNMP.


При этом всегда попадается такое оборудование, которое либо не заведено в систему мониторинга, либо требует просмотра статистики чаще, чем раз в минуту (как rrdtool).
А в арсенале, зачастую, лишь консоль сервера на Windows или Debian.

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

Настоящие космические сражения в Children of a Dead Earth, часть 1

Время на прочтение12 мин
Количество просмотров30K
Мейнстрим игр о войне в космосе — это разноцветные “пиу-пиу” лазеры, стрельба в упор, нулевая скорость относительно абсолютного пространства и прочие совершенно нереалистичные вещи. Поэтому симулятор Children of a Dead Earth, моделирующий сражения на доступных сейчас технологиях, дарит совершенно уникальный опыт. А кроме того, что играть просто интересно, он ставит серьезные вопросы о том, как могут проходить настоящие войны в Солнечной системе, и имеет огромное образовательное значение.


Бой на орбите Марса. Цветные линии — не лазеры, а трассеры снарядов рейлганов
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии116

Настоящие космические сражения в Children of a Dead Earth, часть 2

Время на прочтение9 мин
Количество просмотров16K
В первой части мы поговорили о том, как в очень реалистичном симуляторе космических сражений Children of a Dead Earth выглядит поле боя, какие двигатели используются на кораблях, откуда они берут электроэнергию и каким образом отводят излишнее тепло. Во второй части мы поговорим об оружии и броне.


Флотилия дронов начинает ракетную атаку, противник пытается отвечать зенитным огнем
Всего голосов 33: ↑33 и ↓0+33
Комментарии68

Свой асинхронный tcp-сервер за 15 минут с подробным разбором

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

Ранее я представил пару небольших постов о потенциальной роли Spring Boot 2 в реактивном программировании. После этого я получил ряд вопросов о том, как работают асинхронные операции в программировании в целом. Сегодня я хочу разобрать, что такое Non-blocking I/O и как применить это знание для создания небольшого tcp–сервера на python, который сможет обрабатывать множество открытых и тяжелых (долгих) соединений в один поток. Знание python не требуется: все будет предельно просто со множеством комментариев. Приглашаю всех желающих!
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии17

Software Transactional Memory на Free-монадах

Время на прочтение13 мин
Количество просмотров7.8K
Осознав, что я давно не писал на Хабр ничего полезного о ФП и Haskell, и что имеется вполне отличный повод для технической статьи, — решил тряхнуть стариной. Речь в статье пойдет о Software Trasactional Memory (STM), которую мне удалось реализовать на Free-монадах при участии ADTs (Algebraic Data Types) и MVars (конкурентные мутабельные переменные). И, в общем-то, Proof of Concept оказался крайне простым, в сравнении с «настоящим» STM. Давайте это обсудим.

Software Transactional Memory

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

Аналог std::vector из C++11 на чистом C89, и как я его писал

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

image
Жилой массив людей. Нет, серьёзно.


Холивары между ценителями Си и приверженцами его ублюдка сына в лице C++ начались ещё до моего рождения и прекратятся разве что после смерти обоих этих языков и меня заодно.


Адепты великого творения Кернигана-Ритчи до последней секунды рабочего дня готовы доказывать приспешникам Страуструпа аксиомы про вечность Си и его невероятную гибкость.
Те в ответ по-свойски советуют им лучше порадоваться рабочему дню, ведь он вот-вот окажется последним – двадцать первому веку кроссплатформенный ассемблер не нужен.
Распаляясь, сторонники Си приводят миллионы давно прошедших через голову навылет тезисов "почему Си лучше C++", при этом каждый раз подчёркивая, что второй все достоинства первого растерял ещё будучи в отцовской утробе, попутно утратив лик человеческий.
Обвиняемая сторона в обиде не остаётся и...


а хотя постойте, о чём это я.


Я люблю Си, уважаю C++ и не переношу холивары (честно). При этом я осознаю, что в Си действительно не хватает многого, и яркий тому пример – отсутствие удобной работы с данными. В C++ эту проблему во многом решает STL и свойства самого языка. На мой студенческий взгляд, здесь особо отличается всем знакомый std::vector. Если стало интересно, как я реализовал его аналог средствами C89 – прошу под кат.

Читать дальше →
Всего голосов 58: ↑56 и ↓2+54
Комментарии67

3D-движок, написанный на формулах MS Excel

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

Скриншот экрана игры

Эта статья посвящена тому, как я смог написать 3D-движок только на формулах Excel. Я реализовал следующий функционал:

  • бесконечная процедурно генерируемая карта лабиринта
  • рендеринг трассировкой лучей в реальном времени
  • вычисление окклюзии
  • рендеринг простейшего освещения
  • шейдер освещения и вычислений
  • движок естественного движения
  • в 3D-движке не используются макросы

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

Можете скачать файл и протестировать его самостоятельно!
Всего голосов 229: ↑226 и ↓3+223
Комментарии101

Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

Время на прочтение25 мин
Количество просмотров1.5M

Регулярные выражения в Python от простого к сложному




Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

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

Надеюсь, вам удастся из него извлечь что-нибудь новое и полезное, даже если вы уже в ладах с регулярками.
Читать дальше →
Всего голосов 99: ↑98 и ↓1+97
Комментарии66

Пиролизный котел в быту, или когда цена на газ не имеет значения

Время на прочтение16 мин
Количество просмотров157K
Можно ли построить систему отопления собственного жилища без газовой трубы так, чтобы это было комфортно, не утомительно и даже увлекательно? И что может получиться, если приправить всё это информационными технологиями?


Давайте вместе в этом разберемся.
Читать дальше →
Всего голосов 100: ↑97 и ↓3+94
Комментарии386

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность