Pull to refresh
44
8.2
Send message

Почему именно в Chrome под Windows на сайтах не работают эмодзи флагов

Level of difficultyEasy
Reading time5 min
Views6.7K

Предположим, вы захотели приукрасить в UI своего сайта опцию выбора страны/языка симпатичными эмодзи флагов. Превосходно! Это создаст дополнительный визуальный ориентир, который поможет пользователям быстро находить нужную страну, да и в целом это просто красиво.

Более того, вы даже можете легко реализовать динамическое определение иконок на основе кода региона:

// Смещение для корректировки кода ASCII каждого символа в строке кода ISO страны для определения соответствующего флага.
const EMOJI_CHARACTER_OFFSET = 127397;

const getEmojiForCountryCode = (countryCode: string) =>
  String.fromCodePoint(
    ...countryCode
      .toUpperCase()
      .split('')
      .map((char) => char.charCodeAt(0) + EMOJI_CHARACTER_OFFSET),
  );

// "en-US"
const currentLanguageCode = navigator.language;
// "US"
const currentCountryCode = currentLanguageCode.split("-")[1];
// "🇺🇸"
getEmojiForCountryCode(currentCountryCode);
// "🇫🇷"
getEmojiForCountryCode("FR");
// "🇸🇪"
getEmojiForCountryCode("SE");

Всё идёт шикарно!

Как вдруг…
Читать дальше →

Фундаментальная математика — теория всего в IT и не только. Теория типов и формализация в Coq

Reading time38 min
Views13K

У нас есть 3 "теории всего" - научная картина мира (все сводится к законам физики), информатика (все сводится к битам) и фундамент математики (все сводится к логике). Именно фундамент математики представляет особый интерес, так как он является фундаментом для двух других фундаментов и имеет глубокий философский смысл. Последние 2 года я сильно им увлекся и проделал довольно большую работу по углубленному изучению теории типов (Calculus of Constructions), и готов поделиться результатами, а также рассказать о девяти направлениях, где можно применить это на практике. Очень многое получилось лучше, чем я планировал. Изначально перспективы были не очень понятными, и поэтому я не рассказывал друзьям и коллегам про мою работу в этом направлении и называл это «Секретный Проект». Но теперь, когда многое прояснилось и получилось, можно поделиться успехом. Собственно, в этой статье я расскажу вам не только про сам фундамент математики, а еще его связь с ежедневной работой программиста, а также с Computer Science/Data Science и AI/ML. Я вам нарисую большую и красивую картину, на которой все понятно и логически следует из маленького набора правил выведений типов (11 штук) и аксиом теории множеств (9 штук).

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

Читать далее

Мой опыт подготовки к экзамену по английскому CPE (Certificate of Proficiency in English) на уровень С2 и его сдачи

Reading time23 min
Views21K

Are you suggesting coconuts migrate?
MPHG

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

«Непорядок», — подумал я. Так и родилась идея сдавать экзамен по английскому, но почему именно CPE? А не, скажем, CAE (Cambridge C1) или там TOEFL (американский общий тест на знание английского), IELTS (версия этого же экзамена, но от Cambridge).

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

ОСТОРОЖНО — ТРАФИК, да‑да, под катом будет много картинок, личного мнения автора и его же несмешного юмора (придется потерпеть) — ответ на вопрос в КПДВ тоже там!

Добро пожаловать под кат

WebTorrent: торренты через браузер. Без плагинов, чистый JavaScript

Reading time2 min
Views504K


Теперь для скачивания и просмотра фильмов с торрентов не нужен отдельный торрент-клиент. Также как и для раздачи файлов по протоколу BitTorrent тоже не нужен отдельный клиент. Достаточно обычного браузера, поддерживаются Chrome, Firefox и Opera (десктоп и Android).

Всё это благодаря WebTorrent — гибриду BitTorrent и WebRTC. Скачивание и раздача происходят прямо через сайт. Встроенный плеер начинает показ фильма, как только скачано несколько процентов.
Читать дальше →

Мобильный поиск внутри приложений… которых у вас нет! 

Reading time3 min
Views15K
В далёком 1998 году, когда Google только начинал свой путь интернет поиска, сам по себе поиск в сети подразумевал стол, стул, компьютер (Pentium 2 в лучшем случае), dialup-соединение. Вы дважды задумывались, стоит ли нажимать на эту ссылку или не тратить время и читать поисковую выдачу дальше, в надежде найти нужное с первого раза?

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



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

Frida-node или немножко странного кода

Reading time8 min
Views17K
Приветствую всех, кто читает эту статью.
Как-то так сложилось, что на хабре практически нет упоминаний про замечательную штуку под названием Frida. Самое толковое из них заключается в паре строк кода и общем описании(HabraFrida, из которой, собственно, я и узнал про существование этой штуковины, за что отдельное спасибо автору).
Если вкратце, то Frida занимается тем, что инжектит JS-движок от Гугла(V8) в таргетный процесс(при отсутствии защиты, конечно же), причем встроенный js-код умеет работать с памятью, перехватывать вызовы функций, делать эти самые вызовы и заниматься прочими непотребствами.
Если честно, с реверсом я знаком крайне посредственно и, в-основном, из MMORPG Runes of Magic, с которой я и начал учиться кодить и с которой связанна немалая часть моих текущих познаний в программировании. Собственно, до сих пор время от времени развлекаюсь написанием всяких разностей под нее(дырявая, кстати говоря, игрушка… Каких только шикарных багов в ней не находили, начиная от рисовки предметов и заканчивая sql-inject'ом). Вот для нее я и написал немножко тестового кода на Frida, позволяющего делать… разное.
Почему node.js? Прост. В конце-концов, это же хаб ненормального программирования)
Читать дальше →

Как работают над Chromium

Reading time8 min
Views49K
image
Предисловие от автора оригинала:
В марте 2011 я написал черновик статьи про то, как команда, отвечающая за Google Chrome, разрабатывает и выпускает свой продукт — после чего я благополучно о нем забыл. Лишь несколько дней назад я случайно наткнулся на него. Пусть местами он уже устарел (Chrome форкнул WebKit в Blink в 2013 году, да и я сам больше не работаю в Google), я склонен считать, что изложенные в нем идеи все еще в силе.
Сегодня я собираюсь рассказать вам о том, как работает Chromium. Нет, речь пойдет не совсем о браузере Chrome, а скорее о Chromium — группе людей, занимающихся созданием браузера.

Над проектом Chromium работают сотни инженеров. Вместе мы коммитим в кодовую базу примерно 800 изменений каждую неделю. Мы также зависим от многих других больших и активно развивающихся проектов вроде V8, Skia и WebKit.

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

Каким образом все это продолжает работать? Почему «колеса» у этого «автобуса» еще не «отвалились»? Почему еще не все разработчики сошли с ума?
Читать дальше →

Buzz, язык программирования для самоорганизующегося роя беспилотников

Reading time3 min
Views7.8K


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

Эта же тема заинтересовала канадца итальянского происхождения, Карло Пинцироли (Carlo Pinciroli), который с 2007 года занимается исследованиями в области управления большим количеством полуавтономных роботов. Он вместе с коллегами рассказал о последнем достижении в этой области — язык для программирования роя роботов Buzz. Разработку ведут учёные из политехнической лаборатории MIST канадского института École Polytechnique de Montréal и их зарубежные коллеги.

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

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

image
Рой роботов из проекта МакЛюркина, другого исследователя в этой области
Читать дальше →

Квантовый хостинг: страница существует, пока у неё есть хотя бы один наблюдатель

Reading time2 min
Views13K
image

Наш мир постепенно переходит к состоянию, в котором самым ценным ресурсом оказывается информация. А ценность информации не в последнюю очередь изменяется её распространённостью. GeekTimes, Habrahabr или Wikipedia пользуются популярностью благодаря информации, хранящейся на их страницах. Хорошие фильмы и музыка сохраняются на торрентах гораздо дольше проходных.

Философские мысли посещали и создателя «эфемерного» хостинга ephemeralp2p.durazo.us, который, в сущности, не размещает у себя ни одной страницы, а поддерживает лишь нечто вроде торрент-трекера.

С начальной страницы Ephemeral каждый может вписать в форму любое содержимое, и после отправки формы браузер этого человека становится одним из узлов p2p сети. Для контента создаётся уникальный SHA-256 хэш, который включается в полный адрес созданной страницы.

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

Памятка пользователям ssh

Reading time13 min
Views1.5M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →

Information

Rating
726-th
Registered
Activity