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

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

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

Подробный обзор работы и жизни в Ванкувере (Британская Колумбия, Канада)

Уровень сложностиПростой
Время на прочтение46 мин
Количество просмотров32K

Здравствуйте, меня зовут Александр Зеленин, и я программист. В 2020 году получил приглашение от AWS Cloudfront переехать в Ванкувер, Канаду.


В этой статье я рассмотрю все ключевые темы проживания в Ванкувере (Британская Колумбия, Канада): от вакансий и интервью до получения резидентства.


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


Значительная часть касается Ванкувера в Британской Колумбии. Я посещал другие города и провинции как турист, поэтому не могу написать о жизни там, хотя по рассказам друзей в целом ситуация везде очень похожа (за исключением климата).

Как там, в Ванкувере?
Всего голосов 102: ↑98 и ↓4+123
Комментарии147

System.String не то, чем кажется. Представление строк в памяти .NET

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров13K

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

Читать далее
Всего голосов 24: ↑22 и ↓2+23
Комментарии5

Латинская Америка. Единственное место в мире, где продолжают говорить на латинском языке

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

Рим пал. Но культура его живет. Люди до сих пор любуются величественным Колизеем, читают истории про борьбу галлов, цитируют Цезаря. Но, к сожалению, в Старом Свете совсем перестали говорить на латинском языке и даже почему-то называют его языком мертвым. К счастью, значительная часть Нового Света сумела сохранить этот красивый язык, почему и носит название Латинская Америка. Год назад я отправился сюда, чтобы посмотреть, как живут прямые потомки римлян, как сегодня звучит их забытый Европой язык, каково там жить и работать.

Читать далее
Всего голосов 58: ↑38 и ↓20+33
Комментарии34

Идеальная рабочая станция Linux на процессоре Apple M1 (ARM64)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров48K


Моё знакомство с Asahi Linux началось в марте прошлого года, когда на свет появилась альфа-версия Asahi. Я сразу же установил её на свой Mac Mini с 8-ядерным Apple M1 (ARM64). Asahi — это дистрибутив Linux, который нативно работает в «маках» на Apple Silicon благодаря хитрым хакам и реверс-инжинирингу от сообщества Open Source. Более того, запуск Asahi абсолютно легален, поскольку Apple официально разрешает загрузку отличных от macOS операционных систем на своей платформе Apple Silicon.

Слово Asahi переводится как «утреннее солнце». И это не только известная марка японского пива, но и дистрибутив Linux, который назван так, дабы подчеркнуть первенство команды разработчиков в освоении платформы Mac.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+43
Комментарии74

Почему десктопные приложения работают на веб-платформе?

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

Где мы свернули не туда? Как получилось, что современный десктопный GUI по умолчанию использует платформу HTML/CSS/JavaScript, которая изначально не предназначена для нативной работы на десктопе? Она создана конкретно для браузера и веба. Зачем из нативного софта делать веб-страницы в браузерной оболочке?

Джефф Этвуд (автор Stack Overflow) предсказал этот феномен ещё в 2007 году. Он тогда сформулировал так называемый закон Этвуда:

Любое приложение, которое можно написать на JavaScript, будет в итоге написано на JavaScript.

Так и вышло.
Читать дальше →
Всего голосов 86: ↑72 и ↓14+79
Комментарии261

Разбираем bluetooth протокол RGB лампы

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров8.7K

В данной статье рассмотрим опыт реверс-инжиниринга bluetooth протокола, при помощи которого android приложение управляет цветами и эффектами работы закатной лампы. В результате будет написан небольшой генератор шфированных AES'ом сообщений на C#.

Читать далее
Всего голосов 62: ↑62 и ↓0+62
Комментарии8

Как настроить Alpaca (аналог ChatGPT) на своём арендованном сервере. Гайд для самых маленьких

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров41K

После публикации https://habr.com/ru/news/t/723638/ меня попросило несколько человек написать гайд для новичков, как же это всё запустить поиграться где-нибудь на арендованном сервере, если локальная машина не позволяет? На всё про всё нам потребуется минут 20 и сто рублей денег.

Но уже появились бесплатные варианты на HuggingFace

Читать далее
Всего голосов 28: ↑28 и ↓0+28
Комментарии45

Руководство по ассемблеру x86 для начинающих

Время на прочтение16 мин
Количество просмотров156K
В наше время редко возникает необходимость писать на чистом ассемблере, но я определённо рекомендую это всем, кто интересуется программированием. Вы увидите вещи под иным углом, а навыки пригодятся при отладке кода на других языках.

В этой статье мы напишем с нуля калькулятор обратной польской записи (RPN) на чистом ассемблере x86. Когда закончим, то сможем использовать его так:

$ ./calc "32+6*" # "(3+2)*6" в инфиксной нотации
30

Весь код для статьи здесь. Он обильно закомментирован и может служить учебным материалом для тех, кто уже знает ассемблер.

Начнём с написания базовой программы Hello world! для проверки настроек среды. Затем перейдём к системным вызовам, стеку вызовов, стековым кадрам и соглашению о вызовах x86. Потом для практики напишем некоторые базовые функции на ассемблере x86 — и начнём писать калькулятор RPN.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии26

Про Boeing 747 — с чего всё начиналось

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

Главная бортпроводница SAS Вивека Анкарона на фоне вентилятора двухконтурного двигателя Boeing 747 — на выкатке первого борта 30 сентября 1968 года. Фото: Scandinavian Airlines

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

Сборка последнего самолёта на заводе завершилась в конце 2022-го, но дооснащение нескольких перед поставкой заказчику продлится до 2026-го. А лайнеры в парках многих авиакомпаний продолжат летать гораздо дольше. Рассказываем, как создавали Boeing 747 — удивительное порождение эпохи технологического оптимизма.

За полвека эксплуатации у Boeing 747 возникло два прозвища. Первое — «Джамбо», по имени всемирно известного в XIX веке циркового слона, оно намекает на огромные размеры лайнера. Второе — «Королева небес» (англ. Queen of the skies) отсылает к английской традиции считать морские и воздушные суда одушевлёнными существами женского пола, а ещё указывает на особое положение этой модели в истории гражданской авиации.

На протяжении 35 лет — до начала эксплуатации Airbus A380 в 2007 году — он оставался самым большим и вместительным гражданским самолётом в мире. Интересно, что создатели поначалу вовсе не рассчитывали на такой успех. Планировалось выпустить не более 300 машин и к концу 1970-х свернуть производство.
Читать дальше →
Всего голосов 56: ↑54 и ↓2+74
Комментарии27

Python: класс Factory, возвращающий собственных наследников

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

Добрый день!

Язык Python для меня не является языком программирования, который я использую в повседневной работе. Для меня более близки ООП языки программирования Java, Object Pascal. Поэтому, не холивара ради, я хочу спросить у сообщества на сколько правильно решение, которое я опишу в данной статье?

Мы все учились понемногу, чему-нибудь...
Рейтинг0
Комментарии5

А вы давно заглядывали внутрь ваших зависимостей?

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров18K

Задумывались ли вы о том, что находится внутри зависимостей, которые так или иначе подтягиваются в ваш код? Взять чужую библиотеку сейчас — норма жизни, но чем это обернется с точки зрения безопасности?

Последние истории с node‑ipc и CTX заставили задуматься о том, что лежит внутри этих репозиториев. Оказалось, не только легитимный код. Там есть и попытки заработать без особых усилий, просто собирая информацию, и даже полноценные стиллеры. Причем негативных изменений стало больше после известных событий.

За подробностями о сканировании пакетов npm и PyPI добро пожаловать под кат.

Читать далее
Всего голосов 68: ↑65 и ↓3+80
Комментарии28

Chrome Headless против cloudflare JS challenge

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

Автоматизация сбора информации с различных ресурсов - обычная задача для людей разных сфер деятельности. Жаль, что не всегда бывает достаточно сделать простой GET запрос и разобрать полученный html. Веб-сайты, с которых собираются данные, принимают защитные меры для предотвращения автоматизированных запросов. Одной из таких мер является использование cloudflare. Сегодня мы посмотрим, как cloudflare выявляет ботов через javascript и коснёмся темы деобфускации скриптов.

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

Учим английский с умом: шкала CEFR, тесты IELTS и что всё это значит

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

Привет, Хабр. Екатерина. Очень приятно.

Я обучаю английскому языку 17 лет, в основном как частный преподаватель, но были и несколько лет в СУНЦ МГУ, и групповые занятия в языковом центре. Диапазон обучающихся — дети от 8 лет до ЕГЭ, студенты и «молодые специалисты», топ-менеджеры и научные сотрудники. И у всех, конечно, разные цели и разные мотивации — включая уникальный случай just for fun, в котором взрослая ученица за восемь месяцев прошла от «забытого школьного» до сдачи FCE (Cambridge B2 First Exam) с присвоением уровня C1 в устной речи, и всё просто потому, что ей нравился процесс.

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

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

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

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

Читать далее
Всего голосов 40: ↑38 и ↓2+46
Комментарии38

Как работает Git

Время на прочтение19 мин
Количество просмотров150K
В этом эссе описана схема работы Git. Предполагается, что вы знакомы с Git достаточно, чтобы использовать его для контроля версий своих проектов.

Эссе концентрируется на структуре графа, на которой основан Git, и на том, как свойства этого графа определяют поведение Git. Изучая основы, вы строите своё представление на достоверной информации, а не на гипотезах, полученных из экспериментов с API. Правильная модель позволит вам лучше понять, что сделал Git, что он делает и что он собирается сделать.

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

После прочтения для ещё более глубокого погружения можно обратиться к обильно комментируемому исходному коду моей реализации Git на JavaScript.
Читать дальше →
Всего голосов 110: ↑99 и ↓11+88
Комментарии38

NULL-значения в PostgreSQL: правила и исключения

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

Навскидку многим кажется, что они знакомы с поведением NULL-значений в PostgreSQL, однако иногда неопределённые значения преподносят сюрпризы. Предлагаем вашему вниманию расшифровку доклада Алексея Борщева с PGConf.Russia 2022 — он был полностью посвящён особенностям NULL-значений в Postgres.

NULL простыми словами

Что такое SQL база данных? Согласно одному из определений, это просто набор взаимосвязанных таблиц. А что такое NULL? Обратимся к простому бытовому примеру: все мы задаём друг другу дежурный вопрос: «Как дела?». Часто мы получаем в ответ: «Да ничего...» Вот это «ничего» нам и нужно положить в базу данных — NULL, неопределённое, некорректное или неизвестное значение.

Читать далее
Всего голосов 29: ↑28 и ↓1+33
Комментарии22

БабаГрам: Телеграм для бабушки

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

Однаждый мне рассказали о самодельном девайсе под названием Yayagram (по какой-то причине описанном создателем в Твиттере, а вот тут по-русски). Я на него посмотрел и решил сделать свой, с преферансом и поэтессами аркадными кнопками и старым термопринтером.

Так родился БабаГрам, чёрный ящик, открывающий моей бабушке общение в Телеграме.

В статье - про устройство и сборку сего девайса.

Читать далее
Всего голосов 248: ↑247 и ↓1+311
Комментарии143

Rust должен умереть, МГУ сделал замеры

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

В предыдущих сериях:



Медленно, но верно Раст проникает не только в умы сотрудников больших корпораций, но и в умы школьников и студентов. В этот раз мы поговорим о статье от студента МГУ: https://rustmustdie.com/.


Её репостнул Андрей Викторович Столяров, доцент кафедры алгоритмических языков факультета ВМК МГУ им. М. В. Ломоносова и по совместительству научрук студента-автора статьи.


Я бы сказал, что тут дело даже не в том, что он "неинтуитивный". Дело скорее в том, что компилятор раста сам решает, когда владение "должно" (с его, компилятора, точки зрения) перейти от одного игрока к другому. А решать это вообще-то должен программист, а не компилятор. Ну и начинается пляска вида "как заставить тупой компайлер сделать то, чего я хочу".
Бред это всё.

— А. В. Столяров
Кощунство!
Всего голосов 285: ↑266 и ↓19+325
Комментарии230

CloudFlare отказывается от Nginx в пользу in-house HTTP-прокси на Rust

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

Введение

Сегодня мы поговорим о Pingora, новом HTTP-прокси, который мы создали у себя внутри с помощью Rust. Прокси обслуживает более 1 триллиона запросов в день, форсирует производительность и предоставляет множество новых функций для клиентов Cloudflare, при этом требуя всего лишь треть ресурсов CPU и памяти нашей предыдущей прокси-инфраструктуры.

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

Многие клиенты и пользователи Cloudflare используют нашу глобальную сеть в качестве прокси-сервера между HTTP-клиентами (такими как веб-браузеры, приложения, устройства IoT и т. д.) и серверами. В прошлом мы много говорили о том, как браузеры и другие пользовательские агенты подключаются к нашей сети, мы разработали множество технологий и внедрили новые протоколы (см. QUIC и оптимизация для http2), чтобы сделать эту часть соединения более эффективной.

Сегодня мы сосредоточимся на другой части уравнения: службе, которая проксирует трафик между нашей сетью и серверами в Интернете. Этот прокси-сервис поддерживает наши CDN, Workers fetch, Tunnel, Stream, R2 и многие, многие другие функции и продукты.

Give me more
Всего голосов 25: ↑25 и ↓0+25
Комментарии24

Языка С/C++ не существует

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

Каждый день везде, в том числе в технических статьях, появляется мифический С/С++, честно говоря я просто устал это видеть и хочу в этой короткой статье донести простейшую мысль - С и С++ это два совершенно разных языка с разными требованиями и подходами к разработке.

Читать далее
Всего голосов 146: ↑115 и ↓31+108
Комментарии383

Написание расширений PostgreSQL на языке С — это интересно

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

PostgreSQL — это мощная система управления реляционными базами данных с открытым исходным кодом. Она дополняет язык SQL новыми фичами. СУБД определяется не только ее производительностью и встроенными фичами, но и способностью поддерживать персонализированную/дополнительную, специфичную для пользователя функциональность. Некоторые из этих возможностей могут быть представлены в виде конструкций или модулей базы данных, таких как хранимые процедуры или функции, но их объем обычно ограничен функциональностью, предоставляемой СУБД. Например, как вы напишете кастомное приложение для анализа запросов, которое будет находиться внутри вашей СУБД?

Читать далее
Всего голосов 13: ↑11 и ↓2+11
Комментарии1

Информация

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