Pull to refresh
20
0
Георгий Шепелёв @gshep

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

Send message

[По докам] Flutter. Часть 2. Для iOS разработчиков

Reading time22 min
Views13K
После длительного перерыва я продолжу рассказывать о популярном фреймворке Flutter в формате «вопрос — ответ». Первую статью для Android-разработчиков вы можете найти здесь, а сегодня будет полезный материал для разработчиков под iOS.

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



Flutter. Часть 1. Для Android-разработчиков
Flutter. Часть 2. Для iOS-разработчиков
Flutter. Часть 3. Для разработчиков React Native
Flutter. Часть 4. Для веб-разработчиков
Flutter. Часть 5. Для Xamarin.Forms-разработчиков
Читать дальше →

Шейдеры 3D-игр для начинающих: эффекты

Reading time18 min
Views15K
[Первая часть]

Разобравшись с основами, в этой части статьи мы реализуем такие эффекты, как контуры объектов, bloom, SSAO, размытие, глубина резкости, пикселизация и другие.

Контуры



Создание контуров вокруг геометрии сцены придаёт игре уникальный внешний вид, напоминающий комиксы или мультфильмы.

Diffuse материала


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

uniform struct
  { vec4 diffuse
  ;
  } p3d_Material;

out vec4 fragColor;

void main() {
  vec3 diffuseColor = p3d_Material.diffuse.rgb;
  fragColor = vec4(diffuseColor, 1);
}

Здесь показан небольшой фрагментный шейдер, который рендерит диффузный цвет материала геометрии в текстуру буфера кадров. Эта текстура диффузного цвета из буфера кадров будет входящей текстурой для шейдера контуров.
Читать дальше →

«Fallout 1.5: Resurrection»: игровой постапокалипсис, каким он должен быть

Reading time3 min
Views67K


Кто не знает Fallout? Наверное, эту игру знают все. И большинство поклонников серии постапокалиптических приключений обитателей Убежищ знакомы не только с трехмерными играми, но и с первыми изометрическими вариантами. Сейчас любители «лампового» Fallout могут быть довольны: можно поиграть в мод для Fallout 2, который называется «Fallout 1.5: Resurrection».

Те, кто ознакомился с этим модом, утверждают, что «это тот Fallout 3, каким он должен был быть». Все начинается в с пробуждения персонажа в грязной канаве. Главный герой мало что помнит, а вокруг — множество мутантов. Для того, чтобы отсюда выбраться, сначала нужно победить парочку радскоприонов. Это сразу напоминает игроку, что он находится в среде старого доброго Fallout, а не современных его инкарнаций.

Как я перестал бояться и переизобрел QML

Reading time6 min
Views14K

Что?


Привет, Хабр! Прошло очень много лет, с тех пор как я писал сюда. Надеюсь, время тебя/меня не слишком/слишком потрепало.

Я хотел бы написать о нашем опыте переосмысления идей QML. Qt — прекрасная (по совокупности заслуг) библиотека, и хотя её внутреннее устройство местами вызывает вопросы, но она дала миру не только кросс-платформенный UI тулкит, но и цельный профессиональный набор инструментов: Дизайнер, Креатор, Лингвист, и, конечно же, Qml. Результатом этого переосмысления стал наш скромный проект, который превращает qml в html5/javascript для разных платформ, и даже позволяет собирать простые android приложения используя Cordova.

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

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

Исходные коды доступны на github, там же лежат исходные коды сайта, примеров и библиотека контролов, которые мы используем для всех своих проектов. Документацию и уроки можно посмотреть на нашем сайте, pureqml.com.
Если вы чего-то не понимаете, можете присоединиться к группе поддержки в Telegram, мы постараемся ответить на все вопросы в реальном времени.

Одно из бесплатных приложений, которые мы сделали, был порт игры Fontanero, она должна быть доступна в маркетах LG/Samsung.

Ну а дальше можно не читать!

Как мы дошли до жизни такой


Всё началось в уже-далеком 2010-ом году, когда мы начали писать встраиваемое ПО (и интерфейс пользователя) в одной крупной корпорации для линейки разношерстных устройств на всевозможных платформах, доступных сейчас: arm, mips, x86, sh4, не хватало только sparc…
Читать дальше →

Разгоняем JTAG роутер

Reading time14 min
Views25K

Если вдруг вам потребуется отлаживать несколько микроконтроллеров/микропроцессоров в Крыму, попивая смузи из душного офиса в Химках. Если микропроцессорная плата находится на подвижном объекте и нет возможности дотянуть до нее JTAG отладчик (плата находится на воздушном шарике/квадрокоптере). Если вдруг просто требуется гальваническая изоляция между хостом и отлаживаемой платой (допустим, высоковольтное устройство). И хорошо, что бы еще дешево, сердито и универсально к производителю(STM,Broadcom, Xilinx, etc) или архитектуре(ARM, MIPS, FPGA, etc). Тогда вам потребуется роутер, да-да, просто роутер, допустим, вот такой.
Читать дальше →

Как работают ИТ-специалисты. Александр Козлов, тимлид компании SimbirSoft

Reading time3 min
Views6.5K
Мы продолжаем расспрашивать специалистов о режиме труда и отдыха, профессиональных привычках, об инструментарии, который они используют, и многом другом.

Будет интересно выяснить, что их объединяет, в чем они противоречат другу другу. Возможно, их ответы помогут выявить какие-то общие закономерности, полезные советы, которые помогут многим из нас.


Сегодня наш гость — тимлид и по совместительству pre-sale компании SimbirSoft Александр Козлов.

Хотел стать математиком, но «занесло» в программирование. C 2010 года работает в SimbirSoft. Прошел путь от программиста до тимлида. Продолжительное время работал в роли ПМа, познал весь цикл разработки. Для коллег Александр также является ментором и экспертом в области веб-разработки. Кроме того, он активно взаимодействует с отделом продаж и клиентами.
Читать дальше →

В ядре Linux обнаружена опасная 0-day уязвимость Dirty COW (CVE-2016-5195)

Reading time2 min
Views44K


В ядре Linux обнаружена опасная уязвимость, которая связана с обработкой подсистемой памяти ядра механизма copy-on-write (COW). Эксплуатируя баг можно спровоцировать так называемое состояние гонки (race condition). При эксплуатации уязвимости неавторизованный локальный пользователь сможет получить доступ к memory mappings с правом записи, хотя доступ должен быть ограничивать только чтением (read-only). Уязвимость относится к privilege escalation.
Читать дальше →

Как перестать бояться и полюбить mbed [Часть 2]

Reading time12 min
Views14K
Продолжаем серию публикаций, посвященных использованию среды ARM mbed для создания прототипа измерительного устройства.

Напомню что речь идет о разработке устройства с сенсорным экраном, которое служит для высокоскоростного измерения температуры и относительной влажности. Самое интересное в этой истории — подход к созданию встроенного ПО. Для написания программы используется онлайн IDE mbed, позволяющая создавать железонезависимый код, который одинаково работает на отладочных платах от SiLabs, Atmel, Wiznet, STM32, NXP и других производителей.

Сегодня начинаем работать с выводом картинки на TFT-дисплей.



Содержание цикла публикаций:


Вторая часть под катом.

А ваш AngularJS умеет работать на 3.5Mb ОЗУ?

Reading time15 min
Views24K

В начале весны ABBYY LS совместно с Xerox запустили сервис для перевода документов Xerox Easy Translator Service. Изюминкой этого сервиса является приложение, запускаемое на МФУ Xerox и позволяющее отсканировать необходимое количество документов, дождаться перевода на один из выбранных 38 языков, произвести печать перевода — и все это не отходя от МФУ.

Приложение запускается на определенной серии МФУ Xerox на основе технологии Xerox ConnectKey с сенсорным экраном 800x480 точек. Аппаратная начинка МФУ зависит от конкретной модели, например, наша тестовая малютка Xerox WorkCentre 3655 имеет на борту 1Ghz Dual Core процессор и 2Gb оперативной памяти. Как ни удивительно, но МФУ имеет встроенный webkit-браузер, а наше приложение — это обычное html-приложение, разработанное на AngularJS 1.3.15.

О самом проекте мы писали в блоге раньше, а эта статья посвящена одному из увлекательных этапов проекта, а именно оптимизации AngularJS под работу на МФУ Xerox. Как оказалось на деле, платформа МФУ практически не накладывает никаких серьезных ограничений на разработку приложений, и они работают практически так же, как и на десктопных webkit-браузерах, за исключением одного НО —
Читать дальше →

Троллейбус из буханки или alias analysis в LLVM

Reading time1 min
Views20K
В преддверии очередной конференции C++ Siberia, я решил выложить на всеобщее оборзрение запись доклада с февральской конференции C++ Russia, проходившей в городе-герое Санкт-Петербурге.

Зачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает.

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

В докладе вы найдете:

  • Код Quake3 и стандарт IEEE754
  • Магическую константу 0x5F3759DF
  • Много ассемблера x86
  • Много IR кода LLVM
  • Rust, Java и даже Fortran
Читать дальше →

Ускоряем OpenVPN за $9.99* или встраиваем Orange Pi One в роутер

Reading time7 min
Views48K
image

Некоторые из нас не пользуются интернетом без VPN по тем или иным причинам: кому-то нужен выделенный IP, и проще и дешевле купить VPS с двумя IP, чем покупать адрес у провайдера, кто-то хочет получать доступ ко всем веб-сайтам, а не только разрешенным на территории РФ, третьим нужен IPv6, а провайдер его не предоставляет…
Чаще всего VPN-соединение устанавливают на самом устройстве, которое используется в определенный момент, что вполне оправданно, если у вас только один компьютер и один телефон, и вы их редко используете одновременно. Если же в вашей домашней сети множество устройств, или, например, есть такие, на которых VPN настроить нельзя, было бы удобнее поднимать туннель прямо на домашнем роутере, чтобы не задумываться о настройке каждого устройства по отдельности.

Если вы хоть раз устанавливали OpenVPN на свой маршрутизатор, вы, вероятно, были неприятно удивлены скоростью его работы. SoC'и даже дешевых роутеров без особых проблем пропускают через себя окологигабитный трафик, за счет выноса функций маршрутизации и NAT на отдельный чип, предназначенный исключительно для выполнения этой задачи, а основные процессоры таких роутеров довольно слабы, т.к. нагрузки на них практически никакой нет. Такой компромисс позволяет достигнуть высокой скорости работы роутера и заметно снизить цену готового устройства — маршрутизаторы с мощными процессорами стоят в несколько раз дороже, и позиционируются уже не только как коробка для раздачи интернета, но и в качестве NAS, торрентокачалки и домашней мультимедиа-системы.

Мой роутер, TP-Link TL-WDR4300, нельзя назвать новым — модель появилась в середине 2012 года, и обладает 560 МГц-процессором архитектуры MIPS32 74Kc, мощности которого хватает лишь на 20-23 Мб/с шифрованного трафика через OpenVPN, что по меркам скорости современного домашнего интернета совсем немного.
Как бы нам повысить скорость шифрованного туннеля? Мой роутер довольно функциональный, поддерживает 3x3 MIMO, да и вообще, хорошо работает, не хотелось бы его менять.
Так как сейчас принято делать 10-мегабайтные интернет-страницы, писать десктопные приложения на node.js и паковать их в 100-мегабайтный файл, наращивать вычислительные мощности вместо оптимизации, мы совершим нечто ужасное — переложим VPN-подключение на производительный одноплатный «компьютер» Orange Pi One, который установим в корпус роутера, не занимая существующие сетевые и USB-порты, всего за $9.99*!
* + доставка, + налоги, + на пиво, + MicroSD.
Читать дальше →

Flytouch 2/Superpad III и попытка сэкономить байты в ядре Линукс

Reading time13 min
Views8K
Я планировал написать данную статью уже давно, но в последние месяцы никак не мог выкроить достаточно времени. Пока я размышлял над статьёй, делал примеры и проверял свои догадки, на Хабре уже обсудили константность — [1][2].

Ради забавы попробуем проделать подобную экономию не со сферическим проектом в вакууме, а с самым что ни на есть живым и грандиозным проектом — с ядром Линукс!
Читать дальше →

Путеводитель по реализации 2Д платформеров (начало)

Reading time10 min
Views49K
Так как ранее я был разочарован количеством информации по этому вопросу, я решил восполнить этот пробел, собрав разные виды реализации 2Д платформеров, описав их сильные и слабые стороны и порассуждав над деталями реализации.

Моей целью было создать исчерпывающий и понятный путеводитель по реализации 2Д платформеров.



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

Четыре решения


Мне приходит на ум четыре основных варианта решений при создании платформера. В рамках этой статьи будут рассмотрены все четыре, но из-за большого объема статья поделена на 2 части (прим. пер).
Читать дальше →

Многопоточный SOCKS 4 сервер на Qt

Reading time5 min
Views29K
Время от времени на форумах рунета в ветке Qt появляются вопросы связанные с программированием сетевых приложений. Одна из проблем которая терзает этих людей, — это подход к организации сервера. Обычно перечисляют три подхода:
  • однопоточный асинхронный;
  • многопоточный, создавать по потоку на соединение;
  • многопоточный, с пулом потоков на QThreadPool и QRunnable.

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

Русский отец Звездных Войн

Reading time10 min
Views68K


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



Если нужно посмотреть всего один фильм для знакомства с ХХ веком, звездные войны вне конкуренции. Нет фильма оказавшего больше влияние на поп-культуру, подтверждением тому Рейган назвавший СССР Империей зла и объявивший ей «Звездные Войны» СОИ. Почему именно Звездные Войны завоевали такую популярность?

Секрет успеха звездных войн лежит на поверхности если вы хоть немного знакомы с теорией кино или т.н. «электронных средств коммуникации». Вся теория укладывается в четыре слова «Media is the message». Медиа и есть сообщение — впервые вывел в своей книги Маршалл Макклюен в своей книге «Понимание медиа». Она вышла в 1968 небольшим тиражом, но просочилась в среду хиппи и киношников Голливуда. Книга была довольно заумной, местами малодоказательной и похожей на эзотерику хиппи, но его схемы безупречно объясняли, что происходит. Например, почему телевизор с плохой картинкой неожиданно оказался гораздо популярнее кино.

Как устроены Звездные Войны?

Механизмы профилирования Linux

Reading time9 min
Views40K


Последние пару лет я пишу под ядро Linux и часто вижу, как люди страдают от незнания давнишних, общепринятых и (почти) удобных инструментов. Например, как-то раз мы отлаживали сеть на очередной реинкарнации нашего прибора и пытались понять, что за чудеса происходят с обработкой пакетов. Первым нашим позывом было открыть исходники ядра и вставить в нужные места printk, собрать логи, обработать их каким-нибудь питоном и потом долго думать. Но не зря я читал lwn.net. Я вспомнил, что в ядре есть готовые и прекрасно работающие механизмы трассировки и профилирования ядра: те базовые механизмы, с помощью которых вы сможете собирать какие-то показания из ядра, а затем анализировать их.
Читать дальше →

Need For Speed III Modern Patch: более 100 изменений без исходных кодов

Reading time3 min
Views49K
imageКогда я впервые увидел Need For Speed III, от изумления я даже присел. Диск шёл в подарок к видеокарте моего первого компьютера, и это была первая трёхмерная игра в моей жизни. До этого момента я совершенно не подозревал, что графика в играх может быть настолько потрясающей. Это был далёкий 2000 год. Не счесть количество часов, потраченных на игру в сплитскрине за одной клавиатурой с моим двоюродным братом… Музыке — отдельное слово. Мне она настолько нравилась, что я даже записывал её на кассету, а с кассеты потом обратно на компьютер, при помощи стандартной «Звукозаписи». Это единственное что я тогда смог придумать. Слушал я эти записи по кругу по много часов подряд. MP3? Что это за странные буквы? Только WAV, только хардкор!

И вот, годы спустя, мне захотелось сыграть в эту игру. Но она не заработала на современном железе. Пришлось разбираться. В процессе захотелось ещё и поддержку широкоформатных разрешений… и понеслась! Немного увлёкся этим делом, и в результате получился внушительный патч. Более 8000 строк на ассемблере, исписано 18 листов А4, огромный список изменений…
Читать дальше →

OS Day в Иннополисе

Reading time8 min
Views11K
Недавно я посетил конференцию разработчиков операционных систем OS Day. Организаторами были Дмитрий Завалишин, автор ОС Фантом, и ИСП РАН. Это уже вторая конференция, и на этот раз она проходила совместно с РИФ. Оба эти мероприятия были приурочены к официальному открытию города Иннополис, в котором, собственно, всё и происходило.

Я расскажу только о мероприятиях OS Day, поскольку сам в большинстве из них участвовал.

Отдавая должное гостеприимному Иннополису, я скажу, что по моим ощущениям, результаты гораздо заметнее, чем в Сколково. Стройка идёт очень активно, уже вовсю работает университет, и вообще жизнь в городе действительно есть, что не может не вселять надежду на светлое будущее.
Читать дальше →

Аксиальные двигатели внутреннего сгорания

Reading time5 min
Views77K

Аксиальный ДВС Duke Engine

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

image
Классический ДВС

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

image

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

В 1911 году Macomber Rotary Engine Company из Лос-Анджелеса представила первый из аксиальных (осевых) ДВС. Их ещё называют «бочковыми», двигателями с качающейся (или косой) шайбой. Оригинальная схема позволяет разместить поршни и цилиндры вокруг основного вала и параллельно ему. Вращение вала происходит за счёт качающейся шайбы, на которую поочерёдно давят шатуны поршней.
Читать дальше →

[UPD]Программирование микроконтроллеров 1986ВЕ91Т в Qt Creator

Reading time4 min
Views20K
Хочу показать, как можно писать код и собирать hex-файлы для отечественных микроконтроллеров компании «Миландр» в удобной среде Qt Creator. Обычно для этих средств используются другие среды разработки, но с появлением системы QBS все несколько поменялось.
Читать дальше →

Information

Rating
Does not participate
Location
Ульяновск, Ульяновская обл., Россия
Registered
Activity