Pull to refresh
0
0
Vasiliy @JMS

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

Send message

Операционная система Haiku: портирование приложений и создание пакетов

Reading time44 min
Views24K
Осенью этого года, спустя 6 лет разработки, вышла первая бета-версия «R1/beta1» операционной системы Haiku. Я давно слежу за этим интересным проектом, который нацелен на воссоздание и последующее развитие существовавшей в 1994-2000 годах системы BeOS. Поэтому, как только на новостных IT-сайтах я увидел новость о выходе бета-версии Haiku, я незамедлительно решил посмотреть, что же было добавлено в этот долгожданный релиз. После установки системы в виртуальную машину VirtualBox и небольшого ознакомления с её основной функциональностью, я подумал, что было бы неплохо немного помочь OpenSource-сообществу, которое сегодня развивает эту операционную систему. Начать я решил с того, в чём у меня накопился небольшой опыт: с портирования некоторых игровых проектов.


Рабочий стол операционной системы Haiku.

Позже я попытался доработать некоторые уже существующие приложения и библиотеки. Именно этой моей небольшой деятельности в различных репозиториях с открытым исходным кодом и будет посвящена эта статья. В ней я последовательно опишу те проблемы, с которыми столкнулся и расскажу про методы их решения. Большинство патчей, которые были сделаны в процессе этой работы, я попытался отправить в upstream существующих проектов, дабы обеспечить в них поддержку Haiku и заинтересовать их разработчиков существованием альтернативных операционных систем.
Читать дальше →

Кто больше зарабатывает в ИТ: офисные или удалённые сотрудники?

Reading time3 min
Views30K
image

На «Моём круге» ежемесячно размещается 40% вакансий, предлагающих удалённую работу в сфере ИТ (по данным за 2017 год таких было 35%). При этом, судя по базе резюме сервиса, к удалённой работе готовы 65% специалистов. Налицо явный разрыв между спросом работодателей на удалённую работу и предложением со стороны соискателей на неё.

Как следствие, откликов на вакансии с удалённой работой в среднем в 4-5 раз больше, чем на вакансии с офисной работой (по данным за 2017 год было в 3-4 раза больше). В условиях растущего недостатка в ИТ-специалистах очевидно, что в более выигрышном положении оказываются те работодатели, которые готовы переходить на удалённую работу, ведь такой подход позволяет заполучить больший выбор, а значит и лучшие кадры для своей компании.

Кроме того, удалённые сотрудники не требуют содержания офисного помещения со всеми вытекающими затратами: коммунальные расходы, клининг, аренда офиса, оборудование рабочего места и т.д., что позволяет компании сократить свои расходы. Многие стартапы работают только с удалёнными сотрудниками, ведь экономия на офисе на первых порах для них так же важна, как и качество их продукта или услуг.

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

XAML Behaviors для WPF теперь Open Source

Reading time2 min
Views12K
Рады сообщить, что совсем недавно XAML Behaviors для WPF стал Open Source.

В прошлом году мы открыли исходный код XAML Behaviors для UWP, который имел большой успех, и пакет Behaviors NuGet был загружен более 500 000 раз. XAML Behaviors для WPF теперь поставляется в виде пакета NuGet — Microsoft.Xaml.Behaviors.Wpf. Подробнее под катом!

Читать дальше →

garbage.collect()

Reading time20 min
Views27K
Браузеру для исполнения JavaScript нужно немножко памяти, нужно же где-то хранить объекты, примитивы, функции, которые создаются на все действия пользователя. Поэтому браузер сначала выделяет нужный объем RAM, а когда объекты не используются — чистит её самостоятельно.

В теории звучит хорошо. На практике пользователь открывает 20 вкладок с YouTube, соцсетями, что-то читает, работает, браузер ест память, как Hummer H2 — бензин. Сборщик мусора, как этот монстр с шваброй, бегает по всей памяти и добавляет неразберихи, все тормозит и падает.



Чтобы таких ситуаций не происходило и производительность наших сайтов и приложений не страдала, фронтенд-разработчику стоит знать, как мусор влияет на приложения, как браузер его собирает и оптимизирует работу с памятью и как это все отличается от суровой реальности. Как раз об этом доклад Андрея Роенко (flapenguin) на Frontend Conf 2018.

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

Если бы в JavaScript действительно работала сборка мусора, большинство npm-модулей удаляли бы сами себя сразу после установки.

Но пока это не так, и мы поговорим про то, что есть — про сборку ненужных объектов.

Читать дальше →

Не любите CRM-системы? Вы просто не умеете их готовить

Reading time12 min
Views11K
«Не люблю я этот С++, то ли дело JavaScript», «Ой, не буду я использовать этот PowerShell, в админке всех 400 юзеров ручками настрою, делов-то», «К чёрту свой сервак, арендую облако, и отлично» и т.д. Наверняка вы слышали такие фразы в любой сфере жизни, и все они имеют чёткий внутренний смысл «мне лень/трудно/непонятно/некогда разобраться с С++/PowerShell и т.д., поэтому я буду их не любить и топить за привычную технологию». То же самое происходит с CRM-системами: бизнес как можно дальше откладывает внедрение, лишь бы не погрузиться в процесс, не поменять что-то внутри компании, а то фиг знает, как оно ещё там выйдет. А время уходит, клиентская база теряется, сотрудники работают на малых оборотах, бизнес не умирает, но особо далеко и не бежит. Кайф? Нет. Нужно взять и разобраться — с нас очередная итерация разборок с CRM-системой.  

Читать дальше →

Умный дом, я всё-таки тебя сделал

Reading time4 min
Views88K


Умный дом, достаточно заезженная тема в наше время и в этой публикации я не буду рассказывать вам о новых технологиях, производителях и современных тенденциях данной темы, все написано до меня раз на сто. Я же постараюсь кратко описать процесс создания Умного дома(далее УД) без глубоких технических повествований. Если эта тема будет интересна читателям, я выложу полностью все листинги программ, прошивки МК, схемы и все необходимое, чтобы это чудо стало сердцем вашего дома.
Читать дальше →

Большой FAQ про поезда дальнего следования и неочевидные правила

Reading time11 min
Views88K

Ачивка «Ген тестировщика»: моя коллега сначала села в поезд, а спустя час распечатала билет на станции, мимо которой проехала.

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

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

Настраиваемый беспроводной диммер Noolite SUF-1-300

Reading time3 min
Views12K
Белорусская компания Ноотехника выпустила диммер, предназначенный специально для светодиодных ламп и способный регулировать их яркость в максимально широких пределах.


Читать дальше →

Браузерное расширение от сайта Kinogo

Reading time6 min
Views124K
Продолжая тему обзора расширений, рассмотрим следующее.
При входе на сайт Kinogo начал возникать баннер:



Мне стало интересно что это за расширение и решил просмотреть код.
Читать дальше →

Часть 1. Подробная инструкция по созданию своего CocoaPod

Reading time5 min
Views21K
Нельзя не упомянуть опубликованные ранее статьи по этой теме — введение в Cocoapods и краткое резюме по созданию своего «pod»'а.
Последняя указанная статья дала толчок в нужном направлении, но не хватало знаний для полного понимания поданной информации. Цель данной статьи — максимально подробно описать процесс создания и использования своего собственного CocoaPod'а, далее для краткости — «pod». Ну и упорядочить свои познания в данной области.
Читать дальше →

Часть 2. Делим наш «pod» на модули. Используем чужой «pod» для разработки своего

Reading time6 min
Views8.5K

Введение


Продолжая разрабатывать «pod» в определённый момент приходит понимание, что проект становится большим и похож на лапшу состоит из нескольких логических частей. Чем раньше приходит такое понимание, тем проще выделить различные сущности одного проекта в отдельные блоки. Например, одна часть проекта отвечает за установку соединения с сервером, другая сериализует объекты в JSON и наоборот, третья взаимодействует с UI и т.п. Каждую такую сущность можно выделить отдельным модулем, называемым «subspec» (для простоты изложения далее буду использовать слово «модуль»). Такой подход не только поможет гибче управлять разработкой «pod»'а, но так же даст пользователям вашего «pod»'а возможность использовать только нужные им модули, не захламляя свои проекты ненужным кодом.
Читать дальше →

Как я взломал Steam. Дважды

Reading time4 min
Views121K
Привет, Хабр! Сегодня я расcкажу за что же Valve заплатила наибольшие баунти за историю их программы по вознаграждению за уязвимости. Добро пожаловать под кат!


Читать дальше →

Мой любимый файл в кодовой базе Chromium

Reading time6 min
Views87K
Код Хромиума весьма обширен, там каждому найдётся что-то по вкусу. А я вот решил рассказать о своём любимом файле в нём (а у вас есть такой?). Этот файл отражает всё: боль, разочарование, надежду, упорство, силу воли, ответственность за чужие провалы и самопожертвование. Я иногда читаю его и плачу и проникаюсь пониманием, какая же огромная часть айсберга скрыта под водой. Это, в общем, даже не файл с кодом. Это файл с конфигом, описывающим баги видеокарт, которые Хромиуму приходится обходить для нормального отображения своих страниц на разных платформах. Вот он: https://cs.chromium.org/chromium/src/gpu/config/gpu_driver_bug_list.json

О чём вообще идёт речь? Давайте вспомним, как работает браузер: вы набираете какой-то адрес в адресной строке, браузер загружает контент и отображает его. Чуть детальнее об этом рассказывает хорошая статья «What happens when you type google.com into your browser and press enter?» (и сразу несколько её переводов на Хабре). В ней одним из последних пунктов упоминается, мол, «а теперь, когда всё готово, отрисовываем картинку на экране». Ага, вот так берём и отрисовываем, конечно.
Читать дальше →

Как Яндекс применил компьютерное зрение для повышения качества видеотрансляций. Технология DeepHD

Reading time7 min
Views72K
Когда люди ищут в интернете картинку или видео, они часто прибавляют к запросу фразу «в хорошем качестве». Под качеством обычно имеется в виду разрешение — пользователи хотят, чтобы изображение было большим и при этом хорошо выглядело на экране современного компьютера, смартфона или телевизора. Но что делать, если источника в хорошем качестве просто не существует?

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



В интернете много видеоконтента в низком качестве и разрешении. Это могут быть фильмы, снятые десятки лет назад, или трансляции тв-каналов, которые по разным причинам проводятся не в лучшем качестве. Когда пользователи растягивают такое видео на весь экран, то изображение становится мутным и нечётким. Идеальным решением для старых фильмов было бы найти оригинал плёнки, отсканировать на современном оборудовании и отреставрировать вручную, но это не всегда возможно. С трансляциями всё ещё сложнее – их нужно обрабатывать в прямом эфире. В связи с этим наиболее приемлемый для нас вариант работы — увеличивать разрешение и вычищать артефакты, используя технологии компьютерного зрения.

Профессиональные навыки, востребованные среди UX-специалистов (срез 2018)

Reading time9 min
Views9.1K
С 29 августа по 07 сентября 2018 сообщество UX SPb (независимое сообщество UX-специалистов Санкт-Петербурга) проводило опрос, направленный на изучение профессиональных навыков специалистов по пользовательским интерфейсам. Сообщество обещало опубликовать результаты. Обещание исполнено :)

image

Опрос проводился в тематических группах UX SPb и UXClub в социальных сетях VK и Facebook. В исследовании приняли участие 109 респондентов. Для начала несколько слов о методологии исследования. После — о результатах.
Читать дальше →

Михаил Бессмельцев с коллегой разработал новые алгоритмы для векторизации графики

Reading time3 min
Views33K

Слева направо: оригинал, оснащённое поле (frame field) и окончательный результат. На базе зашумлённого растрового изображение в оттенках серого вычисляется оснащённое поле, выровненное по линиям картинки. На острые углы типа X- и T-пересечений накладываются векторы по обоим направлениям. Затем из этого поля извлекается топология чертежа — и производится окончательная генерация векторных кривых

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

Первые алгоритмы векторизации изображений появились в начале 1990-х годов и
использовались в инструментах для редактирования векторной графики, таких как Adobe Illustrator (Live Trace), CorelDRAW (PowerTRACE) и Inkscape. Несмотря на их широкое внедрение в промышленности, эти алгоритмы до сих пор страдают от серьёзных недостатков и находятся в активной разработке. В нескольких индустриях, где векторизация крайне необходима, включая традиционную анимацию и инженерное проектирование, она часто выполняется вручную. Дизайнеры кропотливо обводят отсканированное изображение с помощью инструментов рисования.
Читать дальше →

Как работает JS: технология Shadow DOM и веб-компоненты

Reading time14 min
Views45K
[Советуем почитать] Другие 19 частей цикла
Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы

Сегодня, в переводе 17 части материалов, посвящённых особенностям всего, что так или иначе связано с JavaScript, речь пойдёт о веб-компонентах и о различных стандартах, которые направлены на работу с ними. Особое внимание здесь будет уделено технологии Shadow DOM.


Читать дальше →

Пишем UI Snapchat'а на Swift'е

Reading time14 min
Views7.1K

Пролог


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


Слева — пример Снепчата, справа — пример приложения, созданием которого мы займемся.


Читать дальше →

Как мы научились подключать китайские камеры за 1000р к облаку. Без регистраторов и SMS (и сэкономили миллионы долларов)

Reading time7 min
Views280K

Всем привет!


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



Облачные системы видеонаблюдения решают эту задачу — предоставляя клиентам уже существующую инфраструктуру хранения и обработки видео. Клиенту облачного видеонаблюдения достаточно просто подключить камеру к интернету и привязать к своему аккаунту в облаке.


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


Для этого необходимо, чтобы на камере был установлен модуль ПО работающий с облаком. Однако, если говорить про дешевые камеры, то у них очень ограничены аппаратные ресурсы, которые почти на 100% занимает родная прошивка вендора камеры, а ресурсов необходимых для облачного плагина — нет. Этой проблеме разработчики из ivideon посвятили статью, в которой говорится почему они не могут установить плагин на дешевые камеры. Как итог, минимальная цена камеры — 5000р ($80 долларов) и миллионы потраченных денег на оборудование.


Мы эту проблему успешно решили. Если интересно как — велком под кат

Читать дальше →

Цена рефакторинга

Reading time6 min
Views30K

Субъективно: рефакторинг — это юношеское "заболевание". По личным наблюдениям, где-то после 26 лет начинает отпускать. Как в той старой фразе: "Кто в молодости не был революционером — у того нет сердца, кто в зрелости не стал консерватором — у того нет ума". Поэтому, пока окончательно не отпустило, попробую описать юзкейсы рефакторинга и возможные цели, которые можно достигнуть с его помощью.
Клац

Information

Rating
Does not participate
Location
Ростов-на-Дону, Ростовская обл., Россия
Date of birth
Registered
Activity