Pull to refresh
2
0

WEB-программист, сетевой администратор

Send message

Как я узнал номер паспорта и телефон премьер-министра по фото в Instagram*

Level of difficultyMedium
Reading time8 min
Views8.3K

Акт 1: полдень воскресенья


Я занимался домашними делами, ни о чём плохом не думал, пил водичку и ни в коем случае не имел никаких намерений заниматься подрывной деятельностью против Австралийского Союза.

А потом я получил сообщение в «групповом чате»1.

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

Обладателем талона был Тони Абботт, один из множества бывших премьер-министров Австралии.
Читать дальше →
Total votes 37: ↑32 and ↓5+40
Comments20

Apache Kafka – Producer и Consumer. Простой пример Nodejs приложения

Level of difficultyMedium
Reading time5 min
Views4.5K

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

Перед чтением данной статьи, настоятельно рекомендую ознакомиться с данной статьей, по теме kafka (Kafka за 20 минут. Ментальная модель и как с ней работать)

Пример реализации можно найти тут...

Читать далее
Total votes 4: ↑3 and ↓1+6
Comments0

Знакомство с Docker или зачем это всё нужно

Level of difficultyEasy
Reading time7 min
Views11K

Всем привет. Меня зовут Алексей, вместе с командой я занимаюсь разработкой прикладных решений в системе Saby компании Тензор. В своей статье хочу поговорить про Docker.

При знакомстве с любой технологией важно понимать, зачем инвестировать своё время в её изучение. Для этого нужно иметь хотя бы общее представление о предметной теме. Сейчас, когда Docker используется повсеместно, многие разработчики (особенно молодые) относятся к нему, как к данности, при этом не до конца понимая, зачем, собственно, он используется и какие проблемы решает. На Хабре есть ознакомительные статьи про Docker, однако они не в полной мере (вернее, не в той мере, в которой хотелось бы мне :) ) освещают данный вопрос. Так возникла идея написания этой статьи. При ее подготовке были использованы: информация из книги Docker In Action, данные с профильных сайтов, собственные разработки для выступления на внутрикорпоративном митапе Тензора, материалы с IT-форумов и, конечно, личный опыт. Если вы опытный разработчик/администратор/devops, и уже давно используете Docker, вы вряд ли узнаете что-то новое из статьи и можете смело проходить мимо. Если же ваш профессиональный путь только начинается, надеюсь, что этот материал поможет вам в освоении данной технологии.

Читать далее
Total votes 11: ↑11 and ↓0+16
Comments4

Идеальная удаленка: восемь простых шагов

Level of difficultyEasy
Reading time8 min
Views29K

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

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

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

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

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

Читать далее
Total votes 46: ↑40 and ↓6+43
Comments57

Как мы заработали 100 000 рублей за 3 месяца, запустив простой конвертер картинок в США

Level of difficultyEasy
Reading time5 min
Views50K

Что мы поняли, запустив простой конвертер картинок за 1 месяц в США. И как заработали 100 000 рублей за первые 3 месяца, хотя вокруг куча бесплатных аналогов.

Читать далее
Total votes 105: ↑94 and ↓11+98
Comments204

Квадранты эффективности работы сотрудников

Level of difficultyEasy
Reading time5 min
Views4.4K

Как организовывать наем, взращивать таланты и при этом осознанно развивать культуру компании.

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

При этом хорошая кадровая работа отнимает немало времени и в длительной перспективе, и непосредственно в рабочем процеcсе.

А сколько же именно? В книге HBR «Первые 90 дней» (ее краткое изложение здесь) приводится диаграмма, наглядно демонстрирующая, что новому сотруднику может потребоваться примерно 3 месяца, чтобы он начал приносить пользу, а еще через 3 месяца он станет безубыточным и начнет окупать вложенные средства.

Читать далее
Total votes 13: ↑9 and ↓4+9
Comments1

Программирование — это вообще не просто!⠀

Reading time19 min
Views35K


Привет, Хабр!


Идея статьи появилась, когда я начал повсюду замечать якобы подтверждения мифа, что «программирование — это просто»‬‬.


В новостях «восьмилетняя девочка, которая второй раз в жизни занимается программированием, наклепала чат-бота за 45 минут»‬ (ага, да!).


Курсы предлагают мне за 10 месяцев с нуля стать миддл+ (ага, да!).


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


Читать дальше →
Total votes 180: ↑171 and ↓9+195
Comments99

Схематично, простыми словами о внутреннем устройстве PHP (Zend Engine, OPCache, JIT)

Level of difficultyEasy
Reading time5 min
Views9.2K

Данный пост нацелен на неопытных PHP-специалистов. От этой информации лучше программировать вы не станете. Ожидаемая польза:

Мне когнитивно и морально легче, когда уменьшается «магия» того, с чем работаешь. Может тебе тоже

Возможно чуть-чуть реже статьи на хабре будут тебя отпугивать

Объясню на 4 примерах — каждый лишь немного сложнее предыдущего.

Пример 1: запуск программы, написанном на компилируемом языке (Go): в полной статье

Пример 2: Запуск скрипта PHP без OPCache и JIT

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

Это означает, что при каждом запуске программы система должна проанализировать исходный код и преобразовать его в понятный код для процессора (т.е. в машинный код).

Вот схематично представил всю последовательность работы PHP скрипта без включенных OPCache и JIT (каждый из них по отдельности рассмотрим в следующих двух примерах).

У нас привычный «исходный код» PHP (файл hello-world.php):

<?php echo "Hello world";

Опять идем по порядку, рассмотрим какие процессы происходят запустив команду:

php hello-world.php

Процесс №1 — Компиляция в байт-код
Сначала исходный код обрабатывается Zend Compiler — это PHP компилятор. Первый из двух основных компонентов Zend Virtual Machine.

В отличие от рассмотренного выше компилятора Go:

задача PHP компилятора — преобразовать исходный код не в машинный код, а в код-посредник - байт-код;

процесс компиляции происходит при каждом запуске программы (вместо лишь единоразового - до запуска программы, как в примере с Go)

В случае PHP этот байт-код назвали PHP OPCode.

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

Чтобы посмотреть результат работы компилятора — сам байт-код — выполним команду:

php -d opcache.opt_debug_level=0x20000 -d opcache.enable_cli=1 hello-world.php

Получим:

$_main: ; (lines=3, args=0, vars=0, tmps=1) ; (after optimizer) ; /hello-world.php:1-2 0000 EXT_STMT 0001 ECHO string("Hello World") 0002 RETURN int(1)

Вначале видим $_main: — обозначает, что следующие строки относятся к функции main. Появление такой функции в байт-коде для глобальной области видимости PHP — занятная историческая особенность, дошедшая из других языков;

Следующие 3 строки начинаются на ; — так обозначаются комментарии. Одна из целей — для дебаг-информации;

Последние 3 строки — непосредственно код нашего приложения, который будет выполняться виртуальной машиной в следующем шаге.

Процесс №2 — Выполнение байт-кода

Читать далее
Total votes 30: ↑29 and ↓1+33
Comments12

Администрирование PostgreSQL для начинающих (часть 5)

Level of difficultyEasy
Reading time17 min
Views3.6K

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

Читать далее
Total votes 15: ↑8 and ↓7+3
Comments50

7 продвинутых приёмов JavaScript, которые должен знать каждый разработчик

Level of difficultyEasy
Reading time4 min
Views15K

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

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

Давайте разберём 7 продвинутых техник в JavaScript, которые помогут вам вывести свои навыки на новый уровень.

Читать далее
Total votes 30: ↑22 and ↓8+20
Comments9

Разработка больших цифровых часов на светодиодной ленте

Level of difficultyMedium
Reading time9 min
Views9.4K

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

Читать далее
Total votes 58: ↑57 and ↓1+72
Comments91

Системный аналитик. Краткий гайд по профессии. Часть 3. Архитектура приложений и их масштабирование

Level of difficultyMedium
Reading time17 min
Views8K

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

Данный текст является обзорной статьей и преимущественно ориентирован на новичков в IT-индустрии, предназначен для желающих познакомиться с профессией, узнать о ее содержании, основных принципах, практиках и инструментах, используемых в ней.

Читать далее
Total votes 21: ↑17 and ↓4+18
Comments0

«База данных» в гугл таблицах для телеграм-бота

Level of difficultyHard
Reading time9 min
Views5.7K


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


Для хранения информации можно использовать гугл-таблицы.


Сегодня мы разберём пример телеграмм бота для проведения тестов, где вопросы и ответы хранятся в разных вкладках одной Google-таблицы. Почему одной? Опять же, для облегчения доступа для потенциальных пользователей.

Читать дальше →
Total votes 10: ↑10 and ↓0+13
Comments14

Почему я предпочитаю исключения, а не значения ошибок

Level of difficultyMedium
Reading time11 min
Views22K

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

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

Давайте рассмотрим пример, в котором применено защищённое от ошибок целочисленное деление:

int safeDiv(int a, int b) {
   if (b == 0)
      throw Div0(); // Исключения передаются особым образом
   return a / b; // Теперь-то всё абсолютно безопасно, ведь так?
}

Новые языки программирования склонны применять сообщения об ошибках в функциональном стиле и кодировать ошибки в возвращаемый тип. Например, Go кодирует ошибку в возвращаемый тип при помощи кортежа (res, err), а Rust возвращает Result<T, E> — тип-сумму результата и ошибки.
Читать дальше →
Total votes 64: ↑56 and ↓8+66
Comments212

Обходим замедление Youtube на Android TV без VPN

Level of difficultyMedium
Reading time3 min
Views184K

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

Читать далее
Total votes 48: ↑46 and ↓2+55
Comments79

Obsidian+Github вместо Notion: синхронизация, бекап и версионность (3-в-1)

Level of difficultyEasy
Reading time8 min
Views37K

О том, как сделать прозрачную синхронизацию заметок Obsidian между устройствами (Desktop, Android, iOS) через GitHub:

1. Без сторонних приложений (вроде iCloud, SyncThing, Termux и пр)
2. Бесплатно
3. Бонусом — резервная копия: как самих заметок, так и истории изменений.

В результате получается полноценная замена Notion: структурированные заметки с автоматической синхронизацией между устройствами.

Инструкция:
Total votes 125: ↑125 and ↓0+146
Comments124

Как работает фронтенд: от загрузки сайта до современных инструментов

Level of difficultyEasy
Reading time8 min
Views13K

Фронтенд — это то, что видит и с чем взаимодействует каждый пользователь интернета, но как он работает на самом деле?

Читать далее
Total votes 15: ↑7 and ↓8+4
Comments9

Необычные приёмы отладки, которые браузер от вас скрывает

Level of difficultyMedium
Reading time8 min
Views12K

Список неочевидных, но при этом полезных хаков, которые позволят использовать отладчик вашего браузера1 более полноценно. Для понимания материала статьи потребуется как минимум средний уровень владения инструментами разработчика.
Читать дальше →
Total votes 64: ↑63 and ↓1+87
Comments12

Как получить радиолюбительский позывной в 2024 году

Level of difficultyEasy
Reading time7 min
Views25K

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

Читать далее
Total votes 61: ↑60 and ↓1+77
Comments68

Рендеринг в React. Чем живет компонент?

Level of difficultyMedium
Reading time8 min
Views3.5K

Одной из самых важных теоретических тем, понимание которой облегчает работу с библиотекой React является процесс рендеринга компонентов. Как React понимает, что пора обновить DOM-дерево? Как ререндеринг влияет на производительность и как ее улучшить? Что происходит под капотом React, когда мы решаем отобразить компонент на странице? Какую роль в этом всем играют хуки? Чтобы ответить на эти вопросы необходимо разобраться с такими понятиями, как рендеринг, жизненный цикл компонента, реконциляция, побочные эффекты и с некоторыми другими.

План статьи:

1) Рендеринг в контексте React

2) Жизненный цикл компонента

2.1) Mounting компонента

2.2) Update компонента

2.3) Unmounting компонента

3) Некоторые вопросы для самопроверки

Читать далее
Total votes 9: ↑8 and ↓1+11
Comments0
1
23 ...

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity