Pull to refresh
18
0
Журат Максим @ChessMax

User

Send message

Tree — убийца JSON, XML, YAML и иже с ними

Reading time11 min
Views175K
Здравствуйте, меня зовут Дмитрий Карловский и я… много думал. Думал я о том, что не так с XML и почему его в последнее время променяли, на бестолковый JSON. Результатом этих измышлений стал новый стандарт формат данных, который вобрал в себя гибкость XML, простоту JSON и наглядность YAML.

image Tree — двумерный бинарно-безопасный формат представления структурированных данных. Легко читаемый как человеком так и компьютером. Простой, компактный, быстрый, выразительный и расширяемый. Сравнивая его с другими популярными форматами, можно составить следующую сравнительную таблицу:
Больше — лучше JSON XML YAML INI Tree
Человекопонятность 3 1 4 5 5
Удобство редактирования 3 1 4 5 5
Произвольная иерархия 3 3 3 1 5
Простота реализации 3 2 1 5 5
Скорость парсинга/сериализации 3 1 1 5 5
Размер в сериализованном виде 3 1 4 5 5
Поддержка поточной обработки 0 0 5 5 5
Бинарная безопасность 3 0 0 0 5
Распространённость 5 5 3 3 0
Поддержка редакторами 5 5 3 5 1
Поддержка языками программирования 5 5 3 5 1
Читать дальше →

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 2 из 6

Reading time7 min
Views145K

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Update:


Внимание, статья 4в даёт новую, более простую версию растеризатора.

Давайте знакомиться, это я.



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

В прошлый раз мы нарисовали проволочную сетку трёхмерной модели, в этот раз мы зальём полигоны. Точнее, треугольники, так как OpenGL практически любой полигон триангулирует, поэтому ни к чему разбирать сложный случай. Напоминаю, что этот цикл статей создан для самостоятельного программирования. Время, которое я здесь привожу — это не время чтения моего кода. Это время написания вашего кода с нуля. Мой код здесь только для того, чтобы сравнить ваш (рабочий) код с моим. Я совсем не являюсь хорошим программистом, поэтому ваш код может быть существенно лучше моего. Любая критика приветствуется, любым вопросам рад.

Пожалуйста, если вы следуете этому туториалу и пишете свой код, выкладывайте его на github.com/code.google.com и им подобные и давайте ссылки в комментариях! Это может хорошо помочь как и вам (другие люди могут чего посоветовать), так и будущим читателям.
Читать дальше →

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

Reading time7 min
Views411K

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

Итак, задача ставится следующим образом: не используя никаких сторонних библиотек (особенно графических) получить примерно такие картинки:



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

Ссылки в Windows, символьные и не только

Reading time3 min
Views397K

Предыстория


В своём топике "Впечатления от Яндекс.Субботника" хабрачеловек absolvo высказал удивление, что один из докладчиков не знал о том, что символьные ссылки есть и в Windows. Честно говоря, не знал этого и я, поэтому поинтересовался об этих ссылках в комментариях.

Думаю, то, что удалось выяснить, может показаться кому-нибудь полезным.
Читать дальше →

Я хочу работать в Google! Телефонное интервью (часть 2)

Reading time14 min
Views17K
Сегодня мы будет обсуждать технические аспекты и реализацию задач на Python и C/C++, которыми нас будет закидывать инженер из Google. Начнём с самых тривиальных проблем с последующим нарастанием сложности. Параллельно обратим внимание о чём стоит упомянуть во время интервью и где не попасть в ловушку.
Читать дальше →

Пишем шейдер на AGAL

Reading time10 min
Views16K
Ни для кого уже не секрет, что Flash Player 11 имеет поддержку GPU ускорения графики. Новая версия вводит Molehill API, позволяя работать с видеокартой на достаточно низком уровне, что с одной стороны даёт полную волю фантазии, с другой требует более глубокого понимания принципов работы современной 3D графики.
Читать дальше →

Полезные книги для программиста в геймдеве

Reading time2 min
Views102K
Привет, Хабр!
Ничего не писал со времен своей первой статьи, решил, что пора это исправить.

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

Ниже я даю рецензии на книжки, которые считаю очень полезными в различных разделах computer science, которые используются в геймдеве. Я намеренно опускаю книги по C++ и алгоритмам: мне кажется, эта тема уже настолько изучена и освещена, что больше про нее не стоит рассказывать.

Я старался покрыть максимальное количество разных топиков, особенно тех, что спрашивают на собеседованиях. Я старался воздерживаться от domain-specific литературы: профессионалы и так знают. Все картинки содержат ссылки на амазон.

А какие книжки нравятся вам?
Также в комментах можете писать, на какие темы вам были бы интересны посты.

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

Станут ли роботы причиной глобальной безработицы?

Reading time12 min
Views100K


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

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

Действительно ли нас ожидает столь безрадостное роботизированное будущее? Давайте обсудим.
Читать дальше →

О высшем образовании

Reading time10 min
Views132K
У каждого человека есть определенный кругозор. Когда этот кругозор сужается до бесконечности малого, то он обращается в точку. Тогда человек и говорит, что это есть его точка зрения.

Давид Гилберт



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

Алгоритмы сжатия данных без потерь

Reading time6 min
Views155K
Часть первая – историческая.

Введение


Существующие алгоритмы сжатия данных можно разделить на два больших класса – с потерями, и без. Алгоритмы с потерями обычно применяются для сжатия изображений и аудио. Эти алгоритмы позволяют достичь больших степеней сжатия благодаря избирательной потере качества. Однако, по определению, восстановить первоначальные данные из сжатого результата невозможно.
Алгоритмы сжатия без потерь применяются для уменьшения размера данных, и работают таким образом, что возможно восстановить данные в точности такими, какие они были до сжатия. Они применяются в коммуникациях, архиваторах и некоторых алгоритмах сжатии аудио и графической информации. Далее мы рассмотрим только алгоритмы сжатия без потерь.
Основной принцип алгоритмов сжатия базируется на том, что в любом файле, содержащем неслучайные данные, информация частично повторяется. Используя статистические математические модели можно определить вероятность повторения определённой комбинации символов. После этого можно создать коды, обозначающие выбранные фразы, и назначить самым часто повторяющимся фразам самые короткие коды. Для этого используются разные техники, например: энтропийное кодирование, кодирование повторов, и сжатие при помощи словаря. С их помощью 8-битный символ, или целая строка, могут быть заменены всего лишь несколькими битами, устраняя таким образом излишнюю информацию.
Читать дальше →

[кейс] Как вернуть долг от бывших работодателей или про хитрые переговорные стратегии

Reading time5 min
Views76K
Года 4 назад довелось побывать на конференции по рекрутингу. Я там делал небольшой доклад про найм инженеров, но несравнимо большее удовольствие получил, слушая доклады опытных хедхантеров.

Это реально детектив! Агата Кристи, Ян Флеминг и Джон Гришем! Люди разрабатывают схемы с внедрением своих людей в чужие компании, продумывают стратегии на три хода вперед… И это работает.

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

image

Кейс “Переговоры стоимостью в 3 зарплаты”


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

Функциональный Javascript. Пишем свои линзы, часть 1

Reading time7 min
Views29K
Привет, хабр.
В данной статье мы познакомимся с линзами, узнаем для чего они нужны, а также реализуем их на JavaScript.

Зачем нужны линзы


Начнем, пожалуй, с ответа на вопрос, зачем же нужны линзы.

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

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

Как улучшить свой стиль программирования?

Reading time6 min
Views139K

Исповедь 1


Я — разработчик. От своих работодателей я постоянно слышу, что работаю медленно и часто всё усложняю без веской причины. И что мне пора бы что-то с этим сделать. Во избежание.

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

Как с большой вероятностью поступить в североамериканский ВУЗ

Reading time7 min
Views59K
Добрый день! Меня зовут Чингиз. По просьбе Csklassami постараюсь рассказать, как с большой долей вероятности поступить в североамериканский ВУЗ на бакалавра. Мне 17 лет и поступал я в этом году первый раз.



Скажу так: если вы пишете статьи на Хабре или с большим интересом их читаете, а главное понимаете суть, то, скорее всего, вы сможете поступить. Звучит, конечно, не очень правдоподобно, но вот в чем дело: в университетах США действует отличная от российской система приема. В американской системе, помимо результатов теста, университет интересуется вашими увлечениями. Для них важно, чтобы вы могли заниматься там научной деятельностью, были разносторонними.

Вот, например, цитата с официального сайта MIT для абитуриентов (undergraduate):

«The most important thing to remember is that at MIT we admit people, not numbers...».
«Очень важно понимать, что в MIT мы принимаем людей, а не цифры...».

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

Любительский подход к компьютерной лингвистике

Reading time5 min
Views19K
Этим постом я хочу привлечь внимание к интересной области прикладного программирования, бурно развивающейся в последние годы — компьютерной лингвистике. А именно — системам, способным к разбору и пониманию текста на русском языке. Но основной фокус внимания я хочу сместить с академических и промышленных систем, в которые вложены десятки и тысячи человеко-часов, к описанию тех способов, какими успехов на этом поприще могут добиться любители.
Читать дальше →

Игры для NES/Famicom/Денди глазами программиста

Reading time5 min
Views120K
Это пост про ограничения старых видеоигр. Сам я под NES никогда не программировал, но с архитектурой поверхностно познакомился. Теперь я не могу играть в игры для NES, не задумываясь, как же они устроены. Иногда это на столько вызывает восхищение, что невольно забываешь про саму игру. «Чему же там восхищаться?», — скажете вы. Да просто укладываться во все ограничения NES, но при этом делать игру красивой, — это действительно целое искусство.

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

Custom layout. Выплывающая панель + параллаксный скроллинг

Reading time7 min
Views19K
Привет, коллеги.

Сегодня я хотел рассказать, как можно создать нестандартный менеджер разметки (layout manager) и вдохнуть в него жизнь при помощи анимаций.
Нам в DataArt часто требуется реализовывать нестандартные компоненты для приложений заказчика, поэтому у меня накопился определенный опыт в этом деле, которым решил поделиться.
В качестве примера решил реализовать аналог часто встречающейся в социальных сетях выплывающей снизу панели. Обычно этот прием используется при необходимости показать контент, например, фото, и добавить возможность комментировать на дополнительной панельке, которую пользователь может вытянуть снизу. При этом основной контент обычно тоже уплывает наверх, но немного медленнее, чем основная панель. Это называется «параллаксный скроллинг».
Специально для этой статьи я решил с нуля реализовать подобный компонент. Сразу хочу заметить, что это не полноценный, стабильный и готовый для продакшен код, а всего лишь демонстрация, написанная за пару часов, чтобы показать основные приемы.

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

Простой каркас Android приложения

Reading time3 min
Views44K

Самым сложным этапом в любом деле, пожалуй, является поиск точки старта. При создании приложений для android эту задачу приходится делить на несколько и определять, например, для каких версий android должно быть будущее приложение.
Не буду разводить демагогию и перейду к самой сути. Для создания, с Вашего позволения, стандартно-шаблонного приложения (левое слайдинг-меню, actionbar), которое будет одинаково смотреться как на android-2.2 так и на android-4 я предлагаю не изобретать велосипеды и использовать готовые решения actionbar-sherlock и sliding-menu.
В этой статье я нарочно опущу процесс установки среды разработки, но буду подразумевать, что разработка ведется в eclipse android sdk.
Читать дальше →

Новый паттерн UI — боковая навигация

Reading time7 min
Views50K
Занимаюсь редизайном приложения 10tracks для Android, и решил позаимствовать красивый интерфейсный ход старших братьев — Facebook и других. На эту тему нашлась хорошая статья, переводом которой спешу поделиться с вами. Между тем эта статья — больше платформа для дискуссии, чем нерушимые устоявишеся правила.


За последний год интерфейс Android улучшался с феноменальной скоростью (я подобрал небольшую галерею приложений, которые мне нравятся в Google+). Много изменений являлись лишь косметическими (тема Holo в ICS, шрифт Roboto, и т.д.). Мы не увидели больших качественных изменений в принципах проектирования интерфейсов. Но, возможно, как раз сейчас происходит одно такое.

Почти одновременно несколько приложений внедрили у себя боковую навигацию как в приложении Facebook. Сначала мы увидели, как она используется в новом дизайне Spotify, а затем почти сразу решение переняли Evernote. Не прошло и года, в новом дизайне приложения Google+ представили аналогичный паттерн.
Читать дальше →

MXML компилятор. Часть 2. Не строковые инициализаторы параметров

Reading time4 min
Views1.6K
Привет, Хабр!

В предыдущей статье я провёл некий ликбез по внутренностям Flex-компилятора (по части MXML) и рассказывал, как избавить себя от проблем работы с классами в MXML, требующими параметры конструктора. Сейчас мы разберём другую сторону вопроса — установка параметров в custom-значения (к примеру, константы) без использования механизма Binding (хотя, очень похоже на него).

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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

Mobile Application Developer
Senior
Flutter
Flutter Bloc
MobX
Mobile
Development of mobile applications