Как стать автором
Обновить
4
0

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

Отправить сообщение

Важные аспекты Unicode, о которых должен знать каждый разработчик JavaScript

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров7.8K


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


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


Приложив определенные усилия, прочитав кучу статей — я постепенно начал понимать что к чему, и это оказалось не так уж трудно. Хотя, некоторые статьи приходилось перечитывать раза по 3.


Как оказалось, Unicode — это универсальный и удобный стандарт, но работать с ним может быть непросто из-за множества абстрактных терминов.


Если у вас есть пробелы в понимании Unicode, то сейчас самое подходящее время их заполнить! Заварите себе вкусный чай или кофе ☕. И давайте погрузимся в удивительный мир абстракций, символов, астралов (astrals) и суррогатов (surrogates).


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


Вы также узнаете, как JavaScript взаимодействует с Unicode и какие трудности могут возникнуть на этом пути.


А также, каким образом новые функции из ECMAScript 2015 могут помочь в решении этих проблем.


Готовы? Давайте начнем!

Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии6

Пробуем делать web-frontend на Rust (WebAssembly)

Время на прочтение4 мин
Количество просмотров39K

Недавно вышла новость про то, что webassembly теперь включен в firefox 52 из коробки. А потом еще и chrome 57 подтянулся (правда, там вроде бы были какие-то баги с запуском). Я решил, что обязательно надо попробовать.


Для тех, кто не знает, что такое webassembly краткая информация: webassembly (или wasm) — это низкоуровневый язык, который понимают браузеры, и в который можно будет скомпилировать программы, написанные на популярных языках. Это гораздо более выгодно по скорости парсинга и выполнения, чем компилировать эти языки в чистый javascript или какой-нибудь asm.js.


Wasm задумывался в основном для c/c++, но, на удивление, уже все готово, чтобы скомпилировать программу на rust. Давайте сделаем небольшое приложение и посмотрим, что получится. Все это будем компилировать на Ubuntu. Без теоретических деталей, просто "пощупаем".

Читать дальше →
Всего голосов 63: ↑61 и ↓2+59
Комментарии144

Пора рассказать, как я 4 года был Билайном на Хабре — и что за это время узнал про Хабр

Время на прочтение16 мин
Количество просмотров62K
Вчера был очередной семинар Хабра о том, как надо делать корпоративные блоги, и я там не выдержал и рассказал эту историю.



Конечно, это был не совсем я, но близко. Дело в том, что давным-давно мне предложили помочь Вымпелкому с блогом. На немного необычных условиях. Первым стало отсутствие всякой официальщины – отсюда и совершенно отрывные посты (за часть из которых в корпоративном сегменте смело оторвали бы руки и не только), и самые актуальные темы (Базовая станция вредная? Ещё как!), и вообще много всего.

Но начну с самого начала. Итак, Хабр тогда был торт — большой и зверски агрессивный, хабов не было, а корпоративные блоги были чем-то вроде раздела «тупиковый отстой». За любую ссылку или рекламу тогда почти банили. Или забивали до -50 за час, например. С корпоративным рылом в такой калашный ряд было никак нельзя.

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

Технари, кстати, оказались совершенно офигенные. Только плевать они хотели на Хабр, по большому счёту. Как и везде.
Читать дальше →
Всего голосов 228: ↑217 и ↓11+206
Комментарии108

Как я избегал выгорания, проработав программистом более трёх десятков лет

Время на прочтение6 мин
Количество просмотров83K
Прочитав множество постов о нынешнем «выгорании» программистов, я начал думать, как же я сумел сохранить интерес к этой профессии даже после столь долгой карьеры — с 1981 года (!). Почему интерес к коду у меня ещё не угас?

Конечно, я частично объяснил это в моём посте «Да, я в мои 56 всё ещё хочу делать это», получившем известность почти три года назад. Но тот пост был о стороне жизни профессионального программиста, связанной с самим процессом программирования; здесь же речь пойдёт не о самом написании кода, а о том, как я всё ещё выдерживаю «программистское бытие». Что же это за работа, которая захватывает так, что утром ждёшь не дождёшься открыть текстовый редактор или IDE или же испытываешь благоговейный ужас от мысли отправить свой зад в офис?

Оглядываясь назад на мои места работы — те, которые мне нравились, те, которые я ненавидел, и те, с которыми просто было можно жить, — я думаю, в чём же различие между ними? Что я делал такого, что позволило мне так долго идти по этому пути?
Читать дальше →
Всего голосов 96: ↑94 и ↓2+92
Комментарии121

У нас проблемы с промисами

Время на прочтение16 мин
Количество просмотров235K
Разрешите представить вам перевод статьи Нолана Лоусона «У нас проблемы с промисами», одной из лучших по теме из тех, что мне доводилось читать.

У нас проблемы с промисами


Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.

Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:

— Многие из нас используют промисы без действительного их понимания.

Если вы мне не верите, решите такую задачку:

Вопрос: В чем разница между этими четырьмя вариантами использования промисов?

doSomething().then(function () {
  return doSomethingElse();
});

doSomething().then(function () {
  doSomethingElse();
});

doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);

Узнайте решение задачи
Всего голосов 139: ↑136 и ↓3+133
Комментарии121

Чистим домашний интернет от очень назойливой рекламы (Ad's blocker для OpenWRT)

Время на прочтение2 мин
Количество просмотров120K


Дело было вечером, делать было нечего... © С. В. Михалков
Навеяно публикацией «Как я bind`ом вирусы искал…», а конкретно этой веткой комментариев. Надеюсь, не поздно размещаю.

Сидел я и думал, телевизор Samsung, WinPhone, (а впоследствии может кофеварка и пылесос) показывают суперназойливую рекламу, надо с этим чтото делать, и раз в WinPhone и телевизор(кофеварку, пылесос) плагина AdBlock нету, то он должен быть там где ходит их трафик, на роутере.
Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии49

Cистема образования в США: Младшая и Средняя школа — чему и как учат? Часть 1

Время на прочтение4 мин
Количество просмотров37K
image

Как то несколько лет назад зашел разговор с сыном шестиклассником о русских дворовых поговорках и задачках.
Для затравки я взял классическую дворовую считалку:

А И Б сидели на трубе
А упала, Б пропала
Кто остался на трубе?


Сын задумался и потом довольно быстро разгадал. Я уязвленный в лучших чувствах российского дворового сленга решил усложнить и попросил перевести на английский. Савва (так зовут сына) не задумываясь выдал следующее:

A N' B were on a tree.
A fell down, so did B.
Who is left on the tree?


Результат несколько меня ошеломил после чего я решил делать эти записки о системе общеобразовательной (очень хорошей школы) в США.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии55

Безумный PHP. Фьюри код

Время на прочтение7 мин
Количество просмотров64K

Сборник PHP ненормальностей или что надо знать чтобы не сойти с ума и не прострелить себе что-нибудь


Прочитал статью mnv: "Приведение типов в PHP == табурет о двух ножках?" и захотелось в комментариях добавить немного дополнений, но… Но потом увидел комментарий и понял, что лучше дополню статью тем, про что мало кто пишет и мало где это имеется в централизованном виде. Вроде бы всем известная тема, а все же кому-то в новинку. Это не совсем про приведение типов, но они тоже есть. Это про особенности, зная которые можно делать меньше ошибок. Если интересно, го под кат, я создал!
Читать дальше →
Всего голосов 91: ↑82 и ↓9+73
Комментарии74

За что конкретно я ненавижу некоторых отдельно взятых маркетологов — или как айтишник по магазинам ходил

Время на прочтение5 мин
Количество просмотров613K
Знакомьтесь, это обычный «литровый» пакет молока:

image

  • Проверка на внимательность: там 900 грамм. Рядом несколько по 950. Но пакет может быть воспринят как литровый.
  • Проверка на знание физики. Рядом лежит похожий кефир. Объём измеряется в миллилитрах, масса — в граммах. Плотность кефира трагически выше плотности воды. То есть 900 грамм кефира 3,2% жирности — это примерно 874,5 миллилитров.

Второй пациент:



25 лет гарантии. Круто, правда? Есть одна проблема. Надо сохранять чек. Проверка, опять же, на знание физики. Чек у них печатается на обычной кассовой термоленте (я проверил на месте). У меня в офисе лежит много чеков. Мы их ксерокопируем, потому что через год-два они полностью выцветают. Самый старый чек, который видел коллега, держался 3 года в папке в архиве. UPD: смотрите самый низ топика, Икея ответила.

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

Осторожно, трафик: под катом много находок с фотографиями.
Читать дальше →
Всего голосов 814: ↑769 и ↓45+724
Комментарии778

Гид по заголовкам кэширования HTTP для начинающих

Время на прочтение8 мин
Количество просмотров82K
В статье данные сведения по заголовкам кэширования (ЗК) для HTTP и соответствующее поведение сетей доставки контента (CDN). Если вам хочется разобраться, каким образом заголовки кэширования вписываются в современный веб, или вам просто интересно, о чём говорят ваши коллеги – эта статья для вас.

Если вы уже понимаете преимущества ЗК, и хотите расширить свои знания, я рекомендую вам обратиться к документации от W3.

Что могут ЗК сделать для вас?


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

Настройки кэширования веб-трафика крайне важны для посещаемых сайтов. Если вы платите за трафик, получаете доход от электронной коммерции, или просто хотите поддерживать свою репутацию хорошего веб-разработчика, вам нужно разбираться в том, как работает кэширование.
Читать дальше →
Всего голосов 36: ↑33 и ↓3+30
Комментарии8

Особенности русской разработки

Время на прочтение8 мин
Количество просмотров284K
image

По роду занятий я часто общаюсь с различными русскими и западными командами. Очень частый вопрос — есть ли какая-нибудь специфика в работе наших и как это влияет на разработку?

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

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

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

Я буду приводить влияние разных факторов в порядке их важности и силы влияния. Чем выше — тем сложнее это изменить и тем больший эффект это оказывает.
Читать дальше →
Всего голосов 531: ↑513 и ↓18+495
Комментарии420

Решение проблем с RTZ2 после Microsoft Update KB2998527

Время на прочтение3 мин
Количество просмотров21K
После выпуска упомянутого выше обновления многие разработчики столкнулись с проблемами. На текущий момент в Chrome проблему хоть как-то попытались исправить, а в IE10 (Document mode=«Standarts») все работает хорошо, но в более старых браузерах и режимах совместимости IE вся работа с датами развалилась.

Так сложилось, что из-за технических ограничений я вынужден поддерживать работу разрабатываемых мной приложений в IE8-9-10 и Chrome. Кроме того, для работы с датами использую библиотеку momentjs.

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

И вот настало время решить эту проблему самостоятельно.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии15

Убрать рекламу в uTorrent за 15 секунд

Время на прочтение1 мин
Количество просмотров681K
Легально, бесплатно, без смс.

Проверено и работает на последней версии 3.4.2 (win)
Читать дальше →
Всего голосов 166: ↑98 и ↓68+30
Комментарии118

Мифы нашего времени: генетически модифицированные организмы. Так ли страшен черт?

Время на прочтение21 мин
Количество просмотров573K
Человеку давно свойственно интересоваться окружающим миром и находить объяснения тому окружающим вещам и событиям. Собственно, без этого человек не стал бы человеком. На базе верований, мифов развивалась сначала религия, а потом — и современная наука, которая уже весьма успешно объясняет окружающий мир от очень малых до впечатляющих масштабов. Но всегда оставались люди, которые противились прогрессу и распространяли устоявшиеся мифы, уверяя, что они отвечают на все вопросы и незачем двигаться дальше. Гром гремит — это Перун-громовержец злится; кто-то заболел — это Бог его наказывает, вот тебе объяснения, отстань, не задавай вопросов, а лучше помолись.
Современные мифы более глубоки и обычно связаны с наукой. Причины понятна — наука развилась (особенно в последнее время) до такой степени, что часто нужен колоссальный объем знаний, чтобы просто понять, о чем вообще идет речь. У многих людей этого объема нет или безвозвратно потерян, что и снижает их сопротивляемость к разного рода мифам нашего времени. Миф про вредность пищевых добавок Exxx; миф про полезность натурального и вредность «химии»; миф про врачей-убийц, травящих людей прививками; миф про настолько страшное ГМО, что наклейки с надписью «без ГМО» надо клеить даже на салфетки и на пачки с солью.
Картинка для привлечения внимания
Что такое ГМО? Зачем они нужны? Как велика опасность и польза от их использования? Есть ли доказательства безопасности этих организмов?
Рассуждения дилетанта на тему - под катом
Всего голосов 319: ↑291 и ↓28+263
Комментарии832

Как отметить день программиста на работе и сделать всех довольными?

Время на прочтение10 мин
Количество просмотров67K
Всем привет! Хотела бы поделиться своим опытом организации праздника в честь «дня программиста» (и не только) на работе и в рабочее время. В отличии от других праздников, таких как Новый год, 23 февраля и 8 марта, день программиста мало кто официально отмечает на работе. В современном мире, где очень много IT компаний, труд программистов для мира IT трудно переоценить. И не только для него. Благодаря [-им-]нам работают сайты и мобильные приложения, работают внутренние интранет ресурсы, CRM и CMS системы и много чего еще.

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

А еще в июле проходил день системного администратора, который так же не все отмечают на официальном уровне.
Читать дальше →
Всего голосов 54: ↑43 и ↓11+32
Комментарии8

Эксплуатация уязвимости в процедуре обновления DrWeb

Время на прочтение11 мин
Количество просмотров49K
В этой статье я хочу более подробно рассказать о проблемах протокола обновления в антивирусе Dr.Web, благодаря чему, в случае перехвата трафика, становится возможным подмена компонентов антивируса и выполнение произвольного кода. Информацию об уязвимости я впервые увидел в материалах конференции SyScan2014 в презентации Breaking Antivirus Software (Joxean Koret), и т.к. факт наличия уязвимости уже известен, то особого смысла в еще одной публикации не было. По крайне мере, до одного момента.

В обсуждении статьи «Данные около 70 000 карт были скомпрометированы на платежном шлюзе РЖД» меня искренне удивила реакция некоторых читателей, и предположительно одного из сотрудников компании Dr.Web, который отказался признавать наличие проблем в ПО. Поэтому, было решено самому разобраться в деталях, а также проверить возможность эксплуатации. Надеюсь, эта публикация поспособствует скорейшему исправлению ситуации.
Читать дальше →
Всего голосов 214: ↑212 и ↓2+210
Комментарии58

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность