• Как устроен пассажирский вагон дальнего следования

      Современный вагон при соединении с остальным поездом автоматически включается в локальную сеть и получает параметры с сервера штабного вагона. У одноэтажного вагона Тверского вагоностроительного завода сейчас в мониторинге примерно 280 параметров (начиная от уровня заполнения фекального бака и заканчивая напряжением аккумулятора), а у двухэтажного — около 400.



      Начнём с межвагонных связей. Это тормозная пневматическая магистраль (пневматические рукава, которыми вагоны соединяются между собой, железнодорожники называют их «лягушками»), высоковольтная магистраль, аварийная магистраль 110 В, интерком и локальная сеть, плюс радиорелейные мосты между вагонами на случай обрыва локальной сети.
      Читать дальше →
    • Зарплаты ИТ-специалистов на середину 2018 года

        image

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

        В этот раз мы не только посмотрим текущие зарплаты по основным ИТ-специализациям, языкам программирования и компаниям, но также увидим полугодовую динамику некоторых из них.
        Читать дальше →
      • Умные часы Pebble: как в одночасье стать раритетом

          Самая первая модификация часов Pebble поступила в продажу в январе 2013 года. В декабре 2016 года стало известно, что компания прекращает существование, и это было неожиданно: только-только прошел казалось бы вполне успешный раунд сбора средств на KickStarter на третье поколение умных часов – и на тебе.

          Весной 2018 года я, при довольно странных жизненных обстоятельствах, потерял свои часы Pebble Time Steel. Так потерял, что даже не могу назвать конкретную дату, что вот они у меня были, а вот – нет. Как будто вместе со штанами, смартфоном и наушниками я переместился в иное измерение, а часы остались где-то там, где есть стены дома, воспоминания, молодость в конце концов, а меня уже нет.


          Штош, подумал я, так даже интереснее. По сути Pebble своим неожиданным провалом дали мне уникальный шанс пополнить свою коллекцию устаревших устройств в тот момент, когда эти устаревшие устройства еще можно добыть новыми в упаковке. Заодно появилась возможность сравнить девайсы типа КПК Palm и современные, завязанные на облако так, что без него они почти не работают. И знаете, не все так плохо! Pebble, кажется, будут жить еще долго благодаря сообществу неравнодушных пользователей и разработчиков.
          Читать дальше →
        • Почему хватит считать нейронные сети черным ящиком?

          image

          Если вы достаточно долго увлекаетесь нейросетевыми технологиями, то наверняка встречались с мнением, кратко заключенным в риторическом вопросе: «Как ты объяснишь человеку, когда нейросеть считает, что у него рак?». И если в лучшем случае такие мысли заставят тебя сомневаться в использовании нейросетей в достаточно ответственных сферах, то в худшем случае ты можешь и потерять весь свой интерес.

          Читать дальше →
        • Ограничения, которые нужно нарушать или как мы ускорили функциональные тесты в три раза

            image

            Функциональные тесты — вещь полезная. Поначалу много времени они не занимают, но проект растёт, и тестов нужно всё больше и больше. Терпеть замедление скорости доставки мы не были намерены и, собравшись с силами, ускорили функциональные тесты в три раза. В статье вы найдёте универсальные советы, однако, особый эффект вы заметите именно на больших проектах.
            Ускоряемся
          • 33 двухюнитовых сервера на 13 ТБ оперативки и 0,6 ПТ распределённого хранилища — почему это минимум для проактивного UBA

              Скриншот собираемых данных:



              Современные системы безопасности ОЧЕНЬ прожорливы до ресурсов. Почему? Потому что они считают больше, чем многие продакшн-сервера и системы бизнес-аналитики.

              Что они считают? Сейчас объясню. Начнём с простого: условно первое поколение защитных устройств было очень простым — на уровне «пускать» и «не пускать». Например, файерволл пускал трафик по определённым правилам и не пускал трафик по другим. Естественно, для этого особая вычислительная мощность не нужна.

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

              Сейчас системы UBA (User Behavior Analytics) анализируют поведение пользователей, сравнивая их с другими сотрудниками компании, и оценивают логичность и правильность каждого действия сотрудника. Делается это за счёт Data Lake-методов и довольно ресурсоемкой, но автоматизированной обработки алгоритмами машинного обучения — в первую очередь потому, что прописывать все возможные сценарии руками занимает несколько тысяч человеко-дней.
              Читать дальше →
            • Ой, у вас баннер убежал!

              Ну. И что?
              Реклама
            • Обзор ЦОД IXcellerate (самый большой машзал в РФ)



                Самое главное — тут после машзала подают горячие влажные салфетки, как в японских ресторанах. Это не имеет никакого отношения к технической части, но по-человечески приятно.

                А это гитара с автографом Пола Маккартни, и да, она у них висит на входе в машзал:



                У этого ЦОДа есть определённое настроение.

                Выглядит всё это как огромный ангар в промзоне около метро «Отрадное». Высота ангара — 14 метров, внутри построен ЦОД высотой 9 метров. Оставшееся пространство играет роль теплоизолятора, что сказывается на местных особенностях охлаждения. Здание выбиралось так, чтобы не выходило на дорогу краями (по протоколам сертификации нельзя получить высокие уровни, если в машзал можно попасть на грузовике, протаранив стену, — видимо, были случаи), имело два разных маршрута заезда и было относительно недалеко от метро. Там же рядом открыли станцию МЦК, но дорога идёт по таким весёлым местам….
                Читать дальше →
              • Flaky tests

                  Что неприятнее «красного теста»? Тест, который то зелёный, то красный, и непонятно, почему. На нашей конференции Heisenbug 2017 Moscow Андрей Солнцев (Codeborne) рассказывал, из-за чего они могут возникать и как снижать их число. Примеры в его докладе такие, что прямо-таки кожей ощущаешь боль, возникавшую при столкновении с ними. А советы полезные — причём ознакомиться с ними стоит как тестировщикам, так и разработчикам. Есть и неожиданное: можно узнать, как порой можно разобраться в проблеме, если оторваться от экрана и поиграть с дочкой в кубики.

                  В итоге зрители высоко оценили доклад, и мы решили не просто опубликовать видеозапись, а ещё и сделать для Хабра текстовую версию доклада.


                  Читать дальше →
                  • +27
                  • 1,5k
                  • 2
                • Создание интерактивной травы в Unreal Engine

                  • Перевод

                  До недавнего времени трава в играх обычно обозначалась текстурой на земле, а не рендерингом отдельных стеблей. Но с увеличением мощности железа появилась возможность рендерить траву. Замечательные примеры такого рендеринга можно увидеть в играх наподобие Horizon Zero Dawn и The Legend of Zelda: Breath of the Wild. В этих играх игрок может бродить по травяным лугам, и, что более важно, трава реагирует на действия игрока.

                  К счастью, создать такую систему не очень сложно. На самом деле, статья научит вас именно этому! В этом туториале вы научитесь следующему:

                  • Создавать векторное поле с помощью захвата сцены (scene capture) и системы частиц
                  • Сгибать траву от игрока на основании векторного поля
                  Читать дальше →
                  • +25
                  • 2,6k
                  • 2
                • [DotNetBook] События об исключительных ситуациях и как на пустом месте получить StackOverflow и ExecutionEngineException

                  • Tutorial

                  С этой статьей я продолжаю публиковать целую серию статей, результатом которой будет книга по работе .NET CLR, и .NET в целом. За ссылками — добро пожаловать по кат.


                  События об исключительных ситуациях


                  В общем случае мы не всегда знаем о тех исключениях, которые произойдут в наших программах потому что практически всегда мы используем что-то, что написано другими людьми и что находится в других подсистемах и библиотеках. Мало того что возможны самые разные ситуации в вашем собственном коде, в коде других библиотек, так еще и существует множество проблем, связанных с исполнением кода в изолированных доменах. И как раз в этом случае было бы крайне полезно уметь получать данные о работе изолированного кода. Ведь вполне реальной может быть ситуация, когда сторонний код перехватывает все без исключения ошибки, заглушив их fault блоком:


                      try {
                          // ...
                      } catch {
                          // do nothing, just to make code call more safe
                      }

                  В такой ситуации может оказаться что выполнение кода уже не так безопасно как выглядит, но сообщений о том что произошли какие-то проблемы мы не имеем. Второй вариант — когда приложение глушит некоторое, пусть даже легальное, исключение. А результат — следующее исключение в случайном месте вызовет падение приложения в некотором будущем от случайной казалось бы ошибки. Тут хотелось бы иметь представление, какая была предыстория этой ошибки. Каков ход событий привел к такой ситуации. И один из способов сделать это возможным — использовать дополнительные события, которые относятся к исключительным ситуациям: AppDomain.FirstChanceException и AppDomain.UnhandledException.


                  Данная статья — первая из четырех в цикле статей про исключения. Полный цикл:
                  Архитектура системы типов
                  Cобытия об исключительных ситуациях (эта статья)
                  — Виды исключительных ситуаций
                  — Сериализация и блоки обработки
                  Читать дальше →
                • Иван Тулуп: асинхронщина в JS под капотом

                    А вы знакомы с Иваном Тулупом? Скорее всего да, просто вы еще не знаете, что это за человек, и что о состоянии его сердечно-сосудистой системы нужно очень заботиться.

                    Об этом и о том, как работает асинхронщина в JS под капотом, как Event Loop работает в браузерах и в Node.js, есть ли какие-то различия и, может быть, похожие вещи рассказал Михаил Башуров (SaitoNakamura) в своем докладе на РИТ++. С удовольствием делимся с вами расшифровкой этого познавательного выступления.



                    О спикере: Михаил Башуров — fullstack веб-разработчик на JS и .NET из Luxoft. Любит красивый UI, зеленые тесты, транспиляцию, компиляцию, технику compiler allowing и улучшать dev experience.

                    От редактора: Доклад Михаила сопровождался не просто слайдами, а демо-проектом, в котором можно понажимать на кнопочки и самостоятельно посмотреть за выполнением тасок. Оптимальным вариантом будет открыть презентацию в соседней вкладке и периодически к ней обращаться, но и по тексту будут даны отсылки на конкретные страницы. А теперь передаем слово спикеру, приятного чтения.

                    Читать дальше →
                  • Ученые нашли способ обратить процесс старения клеток



                      Многие люди мечтают, что при их жизни найдут способ остановить старение. Теперь можно перестать мечтать. Реальная жизнь переплюнула научную фантастику. Исследователи смоги не только остановить, но и обратить процесс старения – вернув человеческие клетки обратно к их «молодому» состоянию. Правда, пока что только в лаборатории. Ученые рассчитывают, что скоро их открытие позволит создавать лекарства против естественной дегенерации тканей. И указывают на то, какие продукты нам нужно употреблять, чтобы достичь похожего эффекта в своём организме.

                      Читать дальше →
                    • LLTR Часть 1: Первые шаги в OMNeT++ и INET

                      • Tutorial

                      OMNeT++ (Objective Modular Network Testbed in C++) Discrete Event Simulator – это модульная, компонентно‑ориентированная C++ библиотека и фреймворк для дискретно‑событийного моделирования, используемая прежде всего для создания симуляторов сетей. Попросту говоря это “симулятор дискретных событий”, включающий: IDE для создания моделей, и сам симулятор (GUI).


                      INET Framework – “библиотека” сетевых моделей для OMNeT++.


                      КДПВ: LLTR Часть 1 – OMNeT++ 5 the Open Simulator :: LLTR Model :: for freedom use


                      Полная версия GIF (15.7 MiB)


                      В предыдущих частях…


                      0. Автоматическое определение топологии сети и неуправляемые коммутаторы. Миссия невыполнима? (+ classic Habrahabr UserCSS)


                      В этой части:


                      • создадим “свой первый” протокол (на примере LLTR Basic);
                      • выберем подходящий симулятор сити для отладки протокола (и создания его модели);
                      • познаем тонкости настройки окружения для симулятора и его IDE (конфигурирование, компиляция, линковка, тюнинг, патчинг, игнорирование устаревшей документации; и другие англицизмы в большом количестве);
                      • столкнемся со всем, с чем можно столкнуться, при создании своей первой модели своего первого протокола в не своем незнакомом симуляторе сети;
                      • пройдем весь путь вместе:
                        • от счастья, принесенного успешной (наконец!) компиляции первого проекта с пустой сетью,
                        • до полного погружения в эксперименты с функционирующей моделью протокола;
                      • tutorial, все описано в виде tutorial – мы будем учиться на ошибках – будем совершать их, и будем понимать их (природу), дабы элегантно/эффективно с ними справится;
                      • репозиторий (git ), в коммитах и тегах которого сохранены все шаги (“Add …”, “Fix …”, “Fix …”, “Modify …”, “Correct …”, …), от начала и до конца.


                      Note: дополнительная информация для читателей хаба “Mesh-сети”.


                      { объем изображений: 2.2+(2.1) MiB; текста: 484 KiB; смайликов: 22 шт. }

                      Читать дальше →
                    • Баг при работе TextBox.GetLineText в .NET WPF

                        Для проведения исследований работы программ и ОС существует очень много различного инструментария. Виртуальные машины, IDE, умные блокноты, IDA, radare, hex-редакторы, pe-редакторы, и даже одних утилит Sysinternals больше сотни — все это сделано для облегчения многих рутинных операций. Но иногда наступает момент, когда ты понимаешь, что среди всего этого многообразия тебе не хватает небольшой утилитки, которая просто сделает банальную и нехитрую работу. Можно написать скрипты на питоне или Powershell на коленке, но нередко на такие поделки без слез не взглянешь и с коллегами не поделишься.

                        Недавно такая ситуация снова наступила у меня. И я решил, что пора просто взять и написать аккуратную утилиту. О самой утилите я расскажу в одной из ближайших статей, но об одной из проблем во время разработки расскажу сейчас.

                        Ошибка проявляется так – если в WPF приложении, в стандартный контрол TextBox воткнуть много строк текста, то вызовы функции GetLineText() начиная с некоторого индекса будут возвращать неправильные строки.


                        Неправильность заключается в том, что хоть строки будут из установленного текста, но расположенные дальше, фактически GetLineText() будет просто пропускать некоторые строки. Ошибка проявляется при очень большом количестве строк. Так я ее и встретил – попытался отобразить в TextBox’е 25 мегабайт текста. Работа с последними строками выявила неожиданный эффект.

                        Гугл подсказывает, что ошибка существует с 2011 года и Microsoft не особо торопится что-то исправлять.
                        Посмотрим на пример и найдем проблему
                      • «Яндекс.Деньги в ваше приложение заходить неинтересно сделайте штонибуть»


                          Где-то внутри приложения Яндекс.Денег спрятана кнопка «Предложить идею». Люди нажимают на неё и пишут о своей боли, предлагают помощь или просят денег за невероятные новые возможности, которые они уже придумали, осталось только заплатить им сто тысяч.


                          Часто ребята этой кнопкой просили поменять дизайн — целиком или частично — чтобы стало лучше. Мы читаем эти письма (я — по утрам за кофе) и видим, что тёмную тему просят чаще, чем настраиваемую разблокировку, но реже, чем фотографию любимого котейки на главном экране.


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


                          Пост об этом, а ещё о том, как мы сделали свой CSS на Swift.

                          Читать дальше →
                        • Как писать программы на стыке мобильной разработки и алгоритмов? Конкурс и истории Яндекса

                            С 10 по 22 сентября пройдет конкурс Яндекс.Блиц по мобильной разработке. Регистрация открыта. Блиц — это короткий путь в Яндекс: участникам топ-5 будет достаточно успешно пройти одну секцию собеседования вместо стандартных четырех.

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



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

                            Читать дальше →
                          • Ваш стиль чтения книг много говорит о вашем интеллекте — и вот почему

                            • Перевод


                            Расскажем, почему у умнейших людей в мире — горы книг, которых они не читают


                            Если вы любите читать настолько же, насколько и я, то поход в книжный для вас — как вылазка в кондитерскую для ребенка.

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

                            Естественно, вы вытаскиваете кредитку или нажимаете кнопочку «Купить».

                            И книги накапливаются. У вас на полках. В спальне. В машине. Может быть, даже в ванной.

                            Наиболее самозабвенные библиофилы изыскивают место там, где ранее никто книг поставить не догадывался:


                            Источник: http://bit.ly/2JRrqbk

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

                            Если следующая сентенция — про вас, то мне предстоит вас обрадовать.

                            «Даже если у вас нет времени прочитать их все, переполнение книжных полок или ридера идет вам на пользу».
                            — Джессика Стиллмен

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

                            Переведено в Alconost
                            Читать дальше →
                          • OpenAI демонстрирует перенос сложных манипуляций из симуляций в реальный мир

                            • Перевод

                            После добавления случайных факторов в относительно простую симуляцию робот из OpenAI научился выполнять сложные наладонные операции




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

                            У людей уходят годы тренировок на то, чтобы научиться надёжно работать пальцами, но у роботов нет столько времени на обучение. Такие сложные задачи всё ещё решаются через практическое обучение и приобретение опыта, и задача состоит в том, чтобы найти способ обучать робота быстрее и эффективнее, чем просто дать роботизированной руке что-то, чем можно манипулировать снова и снова, пока она не поймёт, что срабатывает, а что – нет; на это может уйти сотня лет.
                            Читать дальше →
                            • +15
                            • 2,6k
                            • 3
                          • Vuex: структурирование больших проектов и работа с модулями

                            • Перевод
                            Vuex — это официальная, отлично документированная библиотека для управления состоянием приложений, разработанная специально для фреймворка Vue.js. Автор материала, перевод которого мы сегодня публикуем, полагает, что пользоваться этой библиотекой гораздо приятнее, чем Redux, так как, во-первых, для работы с Vuex требуется меньше шаблонного кода, а во-вторых — из-за того, что для работы с асинхронными механизмами здесь не нужно дополнительных библиотек. Более того, так как библиотека Vuex создана той же командой, которая занимается работой над Vue, эта библиотека очень хорошо интегрируется с данным фреймворком. К сожалению, в работе с Vuex всё ещё можно столкнуться с одной сложностью, которая заключается в правильной подготовке структуры проектов, в которых планируется пользоваться этой библиотекой.



                            В этой статье вы найдёте описание методики структурирования больших проектов, использующих Vuex, и скрипта, предназначенного для автоматизации процесса создания модулей Vuex.
                            Читать дальше →
                          • Три умных кубика Рубика: Xiaomi, Roobo и GoCube

                              Кубик Рубика — уже не просто легендарная игрушка-головоломка, а скорее синоним чему-то сложному, над чем нужно задуматься.

                              С 70х годов прошлого века создатели кубиков традиционно шли путем постоянного усложнения «игрушки», добавляя лишние клетки, меняя и совершенствуя форму. Однако теперь все поменялось, и кубики стали упрощать.



                              Так появилась «обучающая» категория смарт-кубиков, а затем и обучающе-развлекательная. Правда, их не так уж много.
                              Читать дальше →
                            Самое читаемое