Habrahabr лучшее

Лучшие публикации за последние 24 часа
Подписка на Лента Habrahabr лучшее Habrahabr лучшее

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


И так, кому интересно посмотреть на то как можно сделать библиотеку на подобие AutoMapper прошу под кат.

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


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

Недавно в нашем блоге был рассказ о том, как проходит процесс сборки электровелосипеда в том случае, если вы его заказываете в разобранном виде — на примере Twitter Mantis-E0. Сегодня, как тогда и обещали — пара слов об уходе за электровелосипедом — на примере двухподвеса Twitter AM26-E1.



Кстати, большинство советов будут справедливы и для обычных велосипедов, хотя и будут нюансы.
Читать дальше →
Привет!

24-25 июня в Новосибирске прошла конференция Highload++ Siberia 2019. Наши ребята тоже там были докладом «Контейнерные базы Oracle (CDB/PDB) и их практическое использование для разработки ПО», мы выложим текстовую версию немного позже. Было круто, спасибо olegbunin за организацию, а также всем, кто пришёл.


В этом посте мы хотели бы поделиться с вами задачами, которые были на нашем стенде, чтобы вы могли проверить свои знания в Oracle. Под катом — 8 задач, варианты ответов и объяснение.
Читать дальше →
Это документ, написанный мной в 1995 году, когда я работал над первой игрой студии Neversoft: Skeleton Warriors. Это была первая игра, в которой я не использовал язык ассемблера 68K.

Фото сделано примерно в то время. Комплект разработчика (dev kit) («Small Box» и ICE) стоит справа от меня.


Состояние игры
В представленном ниже документе вкратце описывается состояние кода Skeleton Warriors для Sega Saturn, а также упоминаются некоторые из множества аспектов, которые нужно было ещё сделать.

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

Также я немного рассказываю о встраивании данных (файлы .GOV и .GOB) в программу, и о том, что мы будем делать в будущем.

Оборудование для разработки
Наша целевая платформа — Sega Saturn, имеющая два Risc-микропроцессора SH2 и один 68000. Пока мы используем только основной процессор Master SH2, вспомогательный slave SH2 будет использоваться, когда мы разберёмся, как это сделать. 68000 применяется для управления звуковым чипом, нам не пришлось писать для него код, потому что он будет использовать предоставленную Sega звуковую библиотеку.
Читать дальше →


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

В эту тысячу входит 797 штук Model 3, 160 — Model S, все остальное — электромобили Model X. Сейчас компания резко нарастила возможности фабрики и останавливаться на достигнутом не собирается.
Читать дальше →

При переходе на новую технологию, мы лишаемся привычных инструментов для разработки. В каких-то случая мы вынуждены смириться с их отсутствием из-за каких-то технических ограничений, но при возможности переносим инструменты с собой. Разрабатывая android приложения, за основу я брал пример чистой архитектуры предложенной Fernando Cejas. Разбираясь с используемыми во Flutter шаблонами проектирования, я решил отказаться от этой архитектуры в пользу BLoC. К данному шаблону я быстро привык, он очень похож на MVVM, с которым работал ранее, но с одной деталью я никак не хотел мириться. При вызове методов репозитория я должен был ловить исключения, кастить их к какому-то типу и в соответсвии с типом, создавать необходимое состояние. На мой взгляд, это очень захламляет блок и я портировал тип Either используемый ранее в android проектах, основанных на Fernando.

Читать дальше →
Добрый день! Мы в проекте Embox запустили Qt на STM32F7-Discovery и хотели бы об этом рассказать. Ранее, мы уже рассказывали как нам удалось запустить OpenCV.

Qt — это кроссплатформенный фреймворк, который включает в себя не только графические компоненты, но и такие вещи как QtNetwork, набор классов для работы с базами данных, Qt for Automation (в том числе, для реализации IoT) и многое другое. Разработчики команды Qt заранее предусмотрели использование Qt во встроенных системах, поэтому библиотеки довольно хорошо конфигурируются. Однако до недавних пор, мало кто задумывался о портировании Qt на микроконтроллеры, вероятно потому, что такая задача выглядит сложной — Qt большое, MCU маленькие.
Читать дальше →
Организация доступа к серверным данным — это основа почти любого одностраничного приложения. Весь динамический контент в таких приложениях загружается с бэкенда.

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

Представьте себе, как кто-то работает с вашим веб-сайтом через точку доступа в поезде, который несётся по стране со скоростью 200 километров в час. Сетевое соединение при таком раскладе может быть медленным, но запросы к серверу, несмотря на это, делают своё дело.

А что если поезд попадёт в туннель? Тут высока вероятность того, что связь с интернетом прервётся и веб-приложение не сможет «достучаться» до сервера. В этом случае пользователю придётся перезагрузить страницу приложения после того, как поезд выедет из туннеля и соединение с интернетом восстановится.

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

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



Материал, перевод которого мы сегодня публикуем, посвящён разбору нескольких способов повторения неудачных запросов в Angular-приложениях.
Читать дальше →


Изображение: Unsplash

Британский регулятор в области защиты персональных данных анонсировал крупнейший штраф в рамках GDPR. Авиакомпания British Airways должна будет заплатить £183,39 млн фунтов стерлингов ($230 млн) за то, что не смогла защитить информацию своих клиентов. Читать дальше →


Локализация продукции очень важна для международных компаний, осваивающих новые для себя страны и регионы. Аналогично локализация нужна и мобильным приложениям. Если разработчик начинает международную экспансию, важно дать пользователям из другой страны возможность работать с интерфейсом на родном языке. В этой статье мы создадим приложение React Native, используя пакет react-native-localize.
Читать дальше →
Личная приватность или общественная безопасность
В начале июля Ассоциация интернет-провайдеров Великобритании (ISPA-UK) подвела итоги ежегодной номинации «главный герой» и «главный злодей» интернета. В число «главных злодеев» попала организация Mozilla.

Это неожиданное решение. Широко известны Манифест и 10 принципов, в соответствии с которыми Mozilla обещает бороться за здоровье Интернета: «Открытый, глобальный Интернет — это самый мощный из известных нам ресурсов коммуникации и сотрудничества. Он воплощает наши самые глубокие надежды на прогресс человечества. Он предоставляет новые возможности для обучения, взаимопонимания и решения глобальных проблем».

Mozilla — одна из немногих организаций, которая ставит своей целью не получение прибыли, а именно развитие интернета и защиту пользователей. За что же ей присудили звание «главный злодей»? Оказывается, именно за это, то есть за «излишнюю» защиту пользователей. Яблоком раздора стал протокол DoH (DNS-over-HTTPS).
Читать дальше →


Привет, Хабр!

Под катом небольшой обзор конференции GOTO Amsterdam, которую мне довелось посетить в июне. И нет, выбрал я её не из-за локации, а потому что в программе были интересные мне доклады. Город был лишь приятной декорацией. Читать дальше →

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

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


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

Однако музыка, а точнее музыкальные произведения могут послужить не только для эстетического удовольствия, но и для передачи закодированной в них информации, предназначенной для какого-либо устройства и незаметной для слушателя. Сегодня мы с вами познакомимся с весьма необычным исследованием, в котором аспиранты из швейцарской высшей технической школы Цюриха смогли незаметно для человеческого уха внедрить определенные данные в музыкальные произведения, за счет чего сама музыка становится каналом передачи данных. Как именно они реализовали свою технологию, сильно ли отличаются мелодии с и без внедренных данных, и что показали практические испытания? Об этом мы узнаем из доклада исследователей. Поехали. Читать дальше →
Подробный разбор 233-страничного документа, обвиняющего Qualcomm в монополизме


В 2005 году Apple связалась с Qualcomm, как с потенциальным поставщиком модемных чипов для iPhone. Полученный от Qualcomm ответ был необычным: в письме компания требовала, чтобы Apple подписала договор о патентной лицензии ещё до того, как Qualcomm хотя бы рассмотрит возможность поставлять чипы.

«За 20 лет, проведённых в работе с данной индустрией, я ни разу не видел подобных писем», — сказал Тони Блевинс, вице-президент по закупкам Apple.

Большинство поставщиков с готовностью общаются с новыми клиентами – особенно с такими крупными и престижными, как Apple. Но Qualcomm не была похожа на других поставщиков; она наслаждалась доминирующим положением на рынке чипов для сотовой связи. Это давало компании большой рычаг давления, и она не боялась его использовать.
Читать дальше →
LINQ вошел в .NET как новый мощный язык манипуляции с данными. LINQ to SQL как часть его позволяет достаточно удобно общаться с СУБД с помощью например Entity Framework. Однако, достаточно часто применяя его, разработчики забывают смотреть на то, какой именно SQL-запрос будет генерировать LINQ.
Читать дальше →


Уже 2 года я развиваю робототехнику в России. Наверно громко сказано, однако недавно устроив вечер воспоминаний понял, что за это время под моим руководством было открыто 12 кружков по России. Сегодня решил написать об основных штуках, которые я делал в процессе открытия, но Вам этого делать точно не нужно. Так сказать, концентрированный опыт в 7 пунктах. Выделил только самый сок. Приятного чтения.
Читать дальше →
Я постоянно делаю коммиты в проекты open source (Red Hat и др.). И заметил, что больше всего времени отнимают негативные код-ревью, субъективные по сути. Чаще всего такое происходит с коммитами, где мейнтейнеру по какой-то причине не нравится ваше изменение. В лучшем случае такая стратегия код-ревью приводит к потере времени в бессмысленных спорах; в худшем случае он активно препятствует коммиту, создавая враждебную и элитарную среду.

Код-ревью должен быть объективным, кратким и, по возможности, содержать только определённые факты. Это не политический или эмоциональный спор, а технический. Его цель — продвижение вперёд, развитие проекта и всех участников. Любой коммит должен оцениваться только по существу, а не по субъективному мнению.
Читать дальше →
VM, написанная неуверенной рукой гуманитария в среде программирования Arduino с использованием быдлокода и велосипедов. А еще есть компилятор для нее из си-подобного языка, написанный на JavaScript теми же методами. Да. Уже можно спешить в комментарии, бросать камни. Ну а тех, кому все же интересно, приглашаю продолжить чтение.


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

Страницы

Последние публикации

Новые комментарии