Pull to refresh
56
0

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

Send message

«Й» вам не «и» краткое! О важности нормализации Unicode

Reading time3 min
Views55K
й

За последние полгода интернет просто наводнила «буква» «й». Я встречал ее на новостных сайтах, в мессенджерах, на хабрахабре и geektimes. «О чем вообще речь?» — спросите вы — «Я вижу обычную букву й!». Вам повезло. Я вижу ее так:
image
image
image
image
image
Если вы из тех счастливчиков, у кого буква «й» выглядит так же, как и «настоящая» «й», вот вам фокус: скопируйте ее (букву «й») в блокнот, поставьте курсор в конец буквы и нажмите backspace. Магия, отвал башки просто!
Как же так получается?

Графемы, глифы, code points, компоновка и байты

Очень краткое введение:
Графема — то, что мы привыкли называть буквой в смысле единицы текста. Глиф является единицей графики, и может графически представлять саму графему или же ее часть (например, различные диакритические знаки: ударения, умляуты, надстрочное двоеточие у буквы ё и т.д.).
Code Point — то, как записывается текст в представлении Unicode. Одна графема может записываться разными code points.
Code Points кодируются различным байтовым представлением в зависимости от стандарта: UTF-8, UTF-16, UTF-32, BE, LE…
Языки программирования, как правило, работают с code points; для нас, людей, привычно мыслить глифами.

Давайте же наконец разберемся с нашей буквой й. Что же в ней такого особенного?
Эта буква представляет из себя одну графему («и» краткое), но записана она двумя code points:
U+000438 CYRILLIC SMALL LETTER I
U+000306 COMBINING BREVE

Если вы проделали фокус с нажатием backspace, вы как раз и стерли COMBINING BREVE, или, говоря полиграфическим языком, значок краткости над гласной.

Обычная буква «и» краткое, которую мы все с вами привыкли набирать клавиатурой, представляет из себя композитный символ, который записывается одним code point:
U+000439 CYRILLIC SMALL LETTER SHORT I
Читать дальше →

Фейковая Новелла: маленькая игра, разработка которой многому меня научила и очередной бан от Google

Reading time19 min
Views89K
Многим знакомо чувство, когда чувствуется энергия от той самой идеи, что позволит свернуть горы и разработать законченное приложение, а не пополнить кладбище недоделок. Я по доброму завидую тем людям, что умеют трезво рассчитывать свои силы, а не увязать в трясине под гнётом рутины. У меня хватало сил, чтобы не дать начать себе что-то новое… Но конечно, разработка больших и длинных хобби проектов «потому, что бросить» жалко тянет соки, а не приносит радость. Эта публикация о том, как я намеренно дал слабину, чтобы поднять себе настроение, разработав простую игру за три дня. И сделал её за неделю, потратив десять маффинов, но получив кучу опыта и хорошего настроения.
Прочитать о семи днях ненормальной разработки

Так ли безопасен Tox, как его малюют?

Reading time6 min
Views103K
Tox Sux
Всем привет!

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

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

Заранее отвечу на вопрос: мой pull request был принят.
А теперь факты:

Стив Джобс и Святой Грааль: почему одни продукты становятся сверх-успешными, а другие провальными

Reading time4 min
Views7K


Почему одни стартапы и продукты проваливаются, а другие принимаются публикой «на ура» и приносят своим основателям миллионы?

Почему один и тот же человек — Стив Джобс создал два провальных продукта (Macintosh и NeXT) перед тем как произвести на свет бест-селлер iMac?

Почему любой провал нужно рассматривать как ступеньку к успеху?

Я попробую дать свой ответ на этот вопрос.
Читать дальше →

Мы писали, мы писали или что делать когда нас настигает туннельный синдром

Reading time12 min
Views326K
Если вы читаете эти строки, то будет вполне естественно предположить, что вы проводите за компьютером по крайней мере несколько часов в день, а то и больше. Такой режим работы привносит с собой достаточно сильную нагрузку на наши руки, которая может вызвать боли в кистях, запястьях и пальцах. Такие боли вызваны так называемым «туннельным синдромом» (синдромом карпального канала, кистевым туннельный синдром, carpal tunnel syndrome) — хроническим заболеванием.

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

Как развивается туннельный синдром и что мы при этом чувствуем


Итак, что же порождает это неприятное явление? Карпальный (туннельный) синдром вызывается сдавливанием нерва кисти (срединного нерва), который проходит в специальных каналах, образованных костями и связками. Естественно, при сдавливании нерва мы ощущаем боль, которая может чувствоваться в суставе кисти, но не только в нём. Сейчас мы пройдёмся по всем этапам обсуждаемого синдрома и постараемся связять физиологические процессы с тем, что мы можем ощущать при работе за компьютером.

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

Lenovo Vibe P1: смартфон, который непросто разрядить

Reading time5 min
Views19K
Привет, друзья! Сегодня предлагаем немного поговорить нашем новеньком «долгоиграющем» смартфоне Vibe P1. Это новый флагман линейки P с очень емким аккумулятором на 5000 мАч и достойный наследник прошлогодней модели P70. Словом, такой специальный телефон для всех, кто очень расстраивается из-за необходимости носить с собой внешний аккумулятор или подзаряжать телефон в течение дня. Обладателю Vibe P1 все это совершенно не грозит. Больше подробностей под катом.


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

Спросите Итана №28: Чем кормить чудовище

Reading time4 min
Views13K
Нам нравятся все эти удивительные истории. Воображение помогает вызывать к жизни героев этих историй.
— Дэниел Тэммет

Читатель спрашивает:
Недавно стало известно, что Стрелец A* в этом году встретится с облаком газа, и есть вероятность, что она превратится в квазар.
Я думаю, что нет, из-за своего размера – но не знаю, как это аргументировано доказать, не являясь астрофизиком. Скажите, Итан, не настанет ли нам всем конец, когда во все стороны побегут высокоэнергетические лучи почти по всему электромагнитному спектру, вместе с релятивистскими струями?

Пояснение из Вики: Стрелец A* (лат. Sagittarius A*, Sgr A*; произносится «Стрелец А со звездочкой» — компактный радиоисточник, находящийся в центре нашей галактики, входит в состав радиоисточника Стрелец А. Излучает также в инфракрасном, рентгеновском и других диапазонах. Представляет собой сверхмассивный объект (вероятно, чёрную дыру), окружённый горячим радиоизлучающим газовым облаком диаметром около 1,8 пк. Расстояние до радиоисточника составляет около 26 тыс. св. лет, масса центрального объекта — 4,3*106 солнечных.

Для начала рассмотрим то, что у нас есть.

image

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

image

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

О том, как я заставлял Ubuntu работать 10 часов от батареи

Reading time11 min
Views195K
imageЯ являюсь рядовым линукс-пользователем и поэтому не стоит от этой статьи ожидать очень умных ходов или нестандартных программистских решений. Все по мануалам. Но раз результат достигнут, значит кому-то кроме меня это может оказаться полезным.

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

Устанавливал я Ubuntu 10.10 на ноутбук Acer Aspire Timeline 5810TG. Эта машина обладает экраном в почти 16 дюймов и относительно производительным железом, зато батарея достаточно емкая, чтобы ставить с ней личные рекорды.
Читать дальше →

Чистилка. Боремся с нечистым на руку софтом

Reading time3 min
Views29K
Некоторое время назад моя сестра попросила посмотреть ноутбук который «глючит». Выражалось это в показе рекламных баннеров со звуком на рабочем столе, открытие дополнительных вкладок в браузере. И, самое главное, загрузка iframe с рекламой, который полностью перекрывал страницу и не давал нормально пользоваться интернетом.



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

О сколько нам открытий чудных готовит Office Microsoft

Reading time5 min
Views116K


По сообщениям в комментариях к статье про блокнот, во всех версиях Microsoft Excel, начиная по крайней мере с '97 и до самых новых, в имени листа не всегда можно ввести большую букву Ж. Данная проблема обсуждается в сети уже давно, например на этом форуме забавно наблюдать, как некоторые утверждают, что у них проблемы нет, а у других есть, но не всегда, и никто не понимает, почему так. На первый взгляд можно подумать, что это просто недоработка программистов: они хотели не дать пользователю ввести символ ':', и просто не подумали о том, что Ж находится на той же кнопке.

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

Исследование игровых сеттингов

Reading time13 min
Views54K


Год назад нам понадобилось определить, какой игровой сеттинг лучше подходит для мобильной стратегии. Взять ли нам фэнтези, или какие-то научно-фантастические сеттинги? Может быть, это должен был быть сеттинг Skyforge? Однозначного ответа не было. Поэтому мы решили провести исследование аудитории портала Мини-игры Mail.Ru. Это, к слову, один из крупнейших в России порталов, посвященных именно играм, с ежемесячной многомиллионной аудиторией. Читайте далее, чтобы узнать, какие сеттинги наиболее востребованы пользователями мобильных игр.
Читать дальше →

Облака — белогривые лошадки или безопасный ownCloud для «маленьких» в FreeNAS

Reading time13 min
Views60K
image
ownCloud, как утверждает Википедия — это Свободное и открытое веб-приложение для синхронизации данных, расшаривания файлов и удалённого хранения документов в «облаке». И, как мне кажется, довольно интересное решение для организации собственного домашнего облака.

Однако, ownCloud, устанавливающийся в виде плагина в системе FreeNAS, да и просто из коробки, имеет ряд недостатков, от которых хотелось бы избавится даже при использовании дома:
  • Во-первых, устанавливается в связке с SQLite, что подходит только если у вас небольшое кол-во файлов и пользователей, и абсолютно не подходит, если вы планируете синхронизацию с помощью клиента. У меня же хранилище уже расползлось почти на 5Tb и установленный таким образом ownCloud просто отказывался видеть часть файлов. Да и без синхронизации отдача от облака не велика. Заменим базу данных на MariaDB.
  • Во-вторых, отсутствует работа по https, а мне совсем не нравится мысль о том, что кто-то может перехватить мои файлы. Включим https.
  • В-третьих, начисто отсутствует защита от банального подбора пароля методом брутфорса. Защитимся от брутфорса с помощью fail2ban.
  • В-четвёртых, мне лень часто просматривать логи на предмет взлома, но очень хочется оперативно узнавать о таких попытках. Настроим push-оповещения о попытках подбора пароля с помощью сервиса pushover.net.

Как же это всё сделать

Как красиво оформить публикацию на Хабре

Reading time7 min
Views46K
Публикация – основная единица связи автора с читателем. Практика показывает, что на Хабре можно разместить почти любой формат: небольшой анонс и лонгрид-обзор, интервью, фотоотчёт, трансляцию события, урок и многое-многое другое. Нередко успех публикации зависит и от её оформления – приятно оформленный материал читать одно удовольствие. В этой статье мы постараемся предоставить вам много полезных советов по хорошему оформлению материала.

И первый лайфхак – кликабельная картинка до ката, которая ведёт сразу внутрь публикации:


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

Такие удивительные семафоры

Reading time9 min
Views144K
От переводчика: Джефф Прешинг (Jeff Preshing) — канадский разработчик программного обеспечения, последние 12 лет работающий в Ubisoft Montreal. Он приложил руку к созданию таких известных франшиз как Rainbow Six, Child of Light и Assassin’s Creed. У себя в блоге он часто пишет об интересных аспектах параллельного программирования, особенно применительно к Game Dev. Сегодня я бы хотел представить на суд общественности перевод одной из статей Джеффа.

Поток должен ждать. Ждать до тех пор, пока не удастся получить эксклюзивный доступ к ресурсу или пока не появятся задачи для исполнения. Один из механизмов ожидания, при котором поток не ставится на исполнение планировщиком ядра ОС, реализуется при помощи семафора.

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

Поиграем в отладку этой воскресной ночью?

Reading time4 min
Views27K
Вы когда-нибудь думали, что бывают игры, которые сами по себе являются языком программирования? Не обязательно Тьюринг-полным, но всё же языком. У меня есть отличный пример. Игровой процесс Нейрошимы-6 чудовищно похож на дебаг. Снаружи, конечно, смотрится как стратегия, но внутри – она, отладка, родная.

Посмотрите вот на эту картинку из жизни бойцов Пустошей.



Фишки с 20/20 – это командные центры, оставшиеся две — это фишки бойцов с ближней атакой по направлению треугольников по краям. Пока всё просто – синий робот с ножами бьёт желтого ковбоя, а ковбой бьёт по синему комцентру. Давайте усложним стек и запустим компиляцию.
Читать дальше →

О производительности Android-приложений

Reading time5 min
Views38K

Введение


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

Приемы при проектировании архитектуры игр

Reading time11 min
Views150K
К сожалению, нигде нет более менее полной публикации на тему проектирования архитектуры в играх. Есть отдельные статьи на конкретные темы, но нигде все это вместе не собрано. Каждому разработчику приходится самостоятельно по крупицам собирать подобную информацию, набивать шишки. Поэтому решил попробовать собрать часть из этого воедино в данной статье.

Для примеров будет использоваться популярный движок Unity3D. Рассматриваются подходы, применимые в больших играх. Написано из моего личного опыта и из того, как я это понимаю. Конечно, где-то я могу быть не прав, где-то можно лучше сделать. Я тоже все еще в процессе набирания опыта и набивания новых шишек.

В публикации рассматриваются следующие темы:
  • Наследование VS компоненты
  • Сложные иерархии классов юнитов, предметов и прочего
  • Машины состояний, деревья поведений
  • Абстракции игровых объектов
  • Упрощение доступа к другим компонентам в объекте, сцене
  • Сложные составные игровые объекты
  • Характеристики объектов в игре
  • Модификаторы (баффы/дебаффы)
  • Сериализация данных

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

NVIDIA GTX970 — теория ущербности

Reading time9 min
Views55K
В прошлой статье из цикла PC Buyer’s Guide о выборе видеокарты я получил множество интересных комментариев как в личных сообщениях, так и на почту, в скайп… где только можно. Кто-то указывал на неточности, некоторые просили помочь с выбором устройства под их конфиг. В общем, видимо, по видеокартам придётся пройтись глубже, раз тема так волнует.

Сегодня доступно поговорим о последних архитектурах карточек NVIDIA и постараемся понять, над чем смеялся усатый хохотун в этом видео:


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

Да здравствует мыло душистое, или как исправить неправильное масштабирование Windows программ

Reading time3 min
Views28K
Не секрет, что внедрение высокого разрешения экранов идет быстрее, чем адаптация Windows программ под них. Проблемы появляются в первую очередь тогда, когда нам надоедает напрягать глаза и пользоваться увеличительными стеклами, и мы изменяем масштабирование системы. Программы можно разделить на три категории по тому, как они ведут себя при этом:
  • Все элементы программы масштабируются правильно
  • Только некоторые элементы масштабируются правильно
  • Программа говорит Windows, что не умеет масштабироваться, и тогда операционная система сама масштабирует всю программу как умеет (в результате чего мы и видим замыленный интерфейс во многих старых программах)

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

Information

Rating
9,218-th
Location
Россия
Registered
Activity