Pull to refresh
34
ionicman@ionicman

User

11
Subscribers
Send message

Как устроены массивы в PHP и как код влияет на скорость работы с ними

Level of difficultyHard
Reading time11 min
Reach and readers27K

Массивы — это хлеб и масло PHP-разработчика. Мы используем их постоянно, но редко задумываемся, как они устроены внутри. А от этого устройства напрямую зависит скорость и память нашего приложения. Давайте разберемся.

Читать далее

«Who is who?» в мире li-ion. О производителях цилиндрических li-ion аккумуляторов

Level of difficultyEasy
Reading time12 min
Reach and readers16K

Хотелось бы рассказать про производителей цилиндрических li-ion аккумуляторов. Если про аккумуляторы Samsung, Panasonic, Sanyo многие знают, то что за Murata и Molicel, и куда пропали Sony, знают не многие. А уж про китайские EVE, Lishen, BAK, DMEGC и т.д. если вы и слышали, то вряд ли знаете кто получше, а кто похуже. Ну и на десерт всякие Литокалы и им подобные.

Читать далее

Часть вторая. Как я пытался засунуть gRPC в браузер — продолжение

Reading time5 min
Reach and readers10K

Предыдущая часть

Картина мира: почему браузер — главный блокер для «настоящего» gRPC

Если коротко, gRPC живёт поверх HTTP/2 и активно полагается на стримы. А в браузере до сих пор нет низкоуровневого API, который позволил бы JavaScript управлять HTTP/2‑стримами на том уровне, который нужен gRPC. Даже unary‑вызов в gRPC — это частный случай стрима: открыли поток, отдали запрос, забрали ответ, закрылись. Пока браузеры не дадут этот «рычаг», все WEB‑решения — это компромиссы разной степени изящности.

Чем это оборачивается на практике:

Нативные bidi‑стримы из браузера недоступны

Приходится конвертировать транспорт: HTTP/1.1 или WebSocket → что‑то «похоже на gRPC» → gRPC/HTTP2 на бэкенде

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

Читать далее

Особенности Python, о которых вас точно спросят на техническом собеседовании

Level of difficultyEasy
Reading time11 min
Reach and readers47K

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

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

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

Читать далее

Часть 6: Производство платы – опыт работы с JLCPCB

Level of difficultyEasy
Reading time7 min
Reach and readers17K

Предыдущая часть

Часть 5: Алгоритмы – реализация и модель ошибок

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

План статьи: В этой части рассматривается практический процесс изготовления печатной платы нашего устройства.

Читать далее

Android. Glance Widgets. Начало

Level of difficultyEasy
Reading time6 min
Reach and readers9K

Android. Glance widgets.

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

Статья для тех, кто хочет изучить Glance виджеты на Android. Посмотреть на существующие проблемы, про подводные камни и увидеть способы их решения. Полезно делиться опытом

Читать далее

Как я замену MAX'у искал, или «Matrix и XMPP на своем сервере для самых маленьких»

Level of difficultyEasy
Reading time15 min
Reach and readers133K

В свете небезызвестных событий в законотворческой области, столкнулся с необходимостью организовать канал для звонков внутри семьи, т.к. пользоваться звонками в популярных мессенджерах – значит быть подверженным угрозам со стороны мошенников и спонсировать терроризм, а звонить по мобильной сети с ее ужасным качеством связи (несмотря на все потуги операторов в VoLTE и прочие VoiceHD)  в 2025 году – какой-то моветон. А MAX на мои устройства устанавливаться отказался, не знаю почему, я даже не пробовал. Может быть потому что я слишком мало времени провожу в лифте и на парковке?

Что из этого получилось и как повторить — готов поделиться.

Читать далее

Знакомство с программным USB на CH32V003

Level of difficultyMedium
Reading time18 min
Reach and readers21K

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

Изначально я думал написать статью после создания готового устройства, но пока им занимался столкнулся с тем, что информации получается много и она интересная, поэтому решил разбить это все на части. Это первая, ознакомительная. Я как всегда начал разработку с прототипов и сделал тестовые платы с USB, чтобы “прощупать почву” и про них сегодня будет разговор. Но ради интереса еще попробуем загрузчик и соберем программатор из этой же библиотеки.

Попробуем сделать свой Digispark!

Читать далее

Как мы обслуживаем 5 млрд карточек в сутки с задержкой меньше 1 мс

Level of difficultyMedium
Reading time8 min
Reach and readers73K

Меня зовут Ескендиров Мурат, я — архитектор сайта в Ви.Tech, IT-дочке ВсеИнструменты.ру. В этой статье расскажу, как мы строили сервис для выдачи карточек товаров, обрабатывающий до 5 миллиардов запросов в сутки, какие архитектурные решения приняли и с какими проблемами столкнулись в процессе. Расскажу, какие решения сработали, а какие до сих пор остаются нашей головной болью.

Сайт «ВсеИнструменты» имеет почти 20-летнюю историю, и, как это часто бывает, за это время он превратился из маленького сайта с парой сотен товаров на PHP, созданного «на коленке», в гигантский монолит с несколькими миллионами уникальных номенклатур.

Несколько лет назад перед сайтом встали в полный рост проблемы, характерные для многих компаний, выросших из «подпартного» стартапа (первый свой заказ компания «ВсеИнструменты.ру» получила во время лекции в МФТИ, тогда один из основателей для его оформления залез под парту) в многомиллиардную корпорацию:

Читать далее

RegExp с флагом /v: наборы, пересечения и юникод-свойства

Level of difficultyEasy
Reading time6 min
Reach and readers10K

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

Сегодня рассмотрим флаг регулярных выражений v в JavaScript. Флаг поддержан в современных движках и Node 20+, а для старых окружений есть транспиляция через Babel. Начнём с краткой ориентации где это уже работает и почему синтаксис отличается, а потом пойдём в практику.

Читать далее

Go по-прежнему полон проблем

Level of difficultyEasy
Reading time6 min
Reach and readers53K

Я уже больше десяти лет критикую Go, о чём высказывался в своих предыдущих статьях «Why Go is not my favourite language» и «Go programs are not portable».

Описанные в них проблемы языка бесят меня всё больше, и в основном потому, что их явно можно было избежать. Мир знавал решения и получше, но Go почему-то состряпали именно таким.

Те, кто читал мои прежние статьи, встретят здесь частичные повторы, так что заранее прошу меня за них простить.

Читать далее

Геоданные в PostgreSQL: зачем нужен PostGIS и как он работает

Reading time11 min
Reach and readers25K

PostgreSQL известна как надежная и универсальная СУБД. Но если нужно хранить координаты, строить маршруты или анализировать границы районов, ее базовых возможностей уже не хватает. Здесь на помощь приходит PostGIS. Под катом разберемся, что умеет расширение и как его использовать.

Читать далее

JavaScript: хочу свой HTMLElement

Level of difficultyMedium
Reading time4 min
Reach and readers10K

Просто хочу строить свой DOM из своих кирпичей.
С преферансом и поэтессами...

Что мне это даст:

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

Читать далее

Надоело воевать с Git? Попробуй Jujutsu (jj), и вот почему он круче, чем кажется

Level of difficultyEasy
Reading time7 min
Reach and readers32K

Статья для разработчиков, которые устали от сложностей Git и хотят навести порядок в своих проектах. Я расскажу про Jujutsu (jj) — современную альтернативу, которая меняет подход к контролю версий. Без веток, без stash, без мучительных rebase -i — только чистая история и удобный workflow, который позволит вам фокусироваться на написании кода, а не на борьбе с системой. Готовые примеры и наглядная демонстрация возможностей внутри.

Читать далее

Топ-5 алгоритмов из курса матана, которые реально пригодятся в работе

Level of difficultyMedium
Reading time8 min
Reach and readers88K

Всем привет. Сегодня хочу затронуть тему матана, чтобы показать как его можно применять на реальных задачах. Думаю каждый, кто учил матан часто задавался вопросами: «Где это вообще пригодится?», «Зачем это нужно?», «Как это может помочь?» и т. д. Так вот, чтобы эти вопросы отпали раз и навсегда предлагаю свой топ-5 алгоритмов из курса матана с конкретными примерами их применения в работе.

Читать далее

P2P-мессенджеры нового поколения. Связь без интернета

Reading time3 min
Reach and readers207K

В 2025 году состоялось пополнение в ряду P2P-мессенджеров «постапокалиптического» типа, которые обеспечивают связь после отключения интернета. Например, после стихийного бедствия или техногенной аварии.

Читать далее

Docker изнутри: исчерпывающее руководство. Механизмы контейнеризации + примеры, эксперименты и реализация

Level of difficultyMedium
Reading time33 min
Reach and readers166K

Docker — не магия, а грамотное применение механизмов Linux. Разбираем инструмент, который пугает своей сложностью не меньше блокчейна. Показываем на пальцах как работают: Namespaces, Cgroups, OverlayFS – основные компоненты любого контейнера, и как стандарт OCI объединяет их в единую экосистему. Об этом и не только в статье.

Читать далее

Удобный софт для работы с файлами SQLite

Level of difficultyMedium
Reading time7 min
Reach and readers52K

Все мы любим SQLite. Это идеальный движок БД, компактная библиотека размером менее 1 МБ, быстрая, автономная и неубиваемая. Более того, это в принципе удобный способ хранения информации, поскольку СУБД выигрывает у файловой системы по скорости доступа, сжатию, функциональности полнотекстового поиска и т. д. Например, она вдвое быстрее файловой системы Ext4 под Linux.

SQLite — самая популярная в мире СУБД. Как рассказывалось в статье «Безумные и забавные факты о SQLite», в мире активно используется более триллиона (!) БД SQLite, это невероятное число. Просто она встроена во все смартфоны, браузеры, операционные системы и бесчисленное число других приложений.

Читать далее

Изучаем Go: руководство для JavaScript-разработчиков. Часть 2

Level of difficultyMedium
Reading time13 min
Reach and readers15K

После пяти лет работы JavaScript-разработчиком, занимаясь как фронтендом, так и бэкендом, я провел последний год, осваивая Go для серверной разработки. За это время мне пришлось переосмыслить многие вещи. Различия в синтаксисе, базовых принципах, подходах к организации кода и, конечно, в средах выполнения — все это довольно сильно влияет не только на производительность приложения, но и на эффективность разработчика.

Интерес к Go в JavaScript-сообществе тоже заметно вырос. Особенно после новости от Microsoft о том, что они переписывают официальный компилятор TypeScript на Go — и обещают ускорение до 10 раз по сравнению с текущей реализацией.

Эта статья — своего рода путеводитель для JavaScript-разработчиков, которые задумываются о переходе на Go или просто хотят с ним познакомиться. Я постарался структурировать материал вокруг ключевых особенностей языка, сравнивая их с привычными концепциями из JavaScript/TypeScript. И, конечно, расскажу о "подводных камнях", с которыми столкнулся лично — с багажом мышления JS-разработчика.

Читать далее

Паттерны современного Node.js (2025)

Level of difficultyEasy
Reading time14 min
Reach and readers33K

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

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

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

Читать далее

Information

Rating
Does not participate
Registered
Activity