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

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

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

Оконные функции простым языком — Фреймы

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

Привет всем!

Это вторая часть к продолжению статьи "Оконные функции простым языком с примерами". Рекомендую ознакомиться сначала с ней, а потом вернуться к прочтению данной статьи, чтобы полностью понимать синтаксис и применение оконных функций. В этой статье будет разобрано на примерах такое понятие как "фрейм" оконных функций, который расширяет возможности оконок для решения более сложных аналитических задач.

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

P.S. Если автор что-то не разобрал и не написал, значит он посчитал это не обязательным в рамках этой статьи :-)

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

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

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

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

Данный пост нацелен на неопытных 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 — Выполнение байт-кода

Читать далее
Всего голосов 33: ↑32 и ↓1+38
Комментарии12

Промпт-инжиниринг: как найти общий язык с ИИ

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

В последние годы мир информационных технологий переживает настоящую революцию, связанную с развитием искусственного интеллекта (ИИ). Одной из наиболее захватывающих и новых профессий в этой области становится промпт‑инжиниринг. Меня зовут Наталья Бруй, я руководитель группы промпт‑инженеров MTS AI. В этой статье я расскажу почему эта профессия приобретает всё большую значимость и как можно использовать приёмы промпт‑инжиниринга в работе и повседневной жизни.

Читать далее
Всего голосов 20: ↑17 и ↓3+21
Комментарии2

Подключение Outline VPN на сервере без графического интерфейса

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

В своей первой статье я разобрался как подключить Outline VPN на сервере без графического интерфейса.
Скриншотов будет мало, воды - много.

Есть у меня несколько тестовых серверов, где я опробую всякое. И вот, понадобилось мне уже пользоваться VPN, но, вот беда, terraform отказывается не только скачиваться, но и работать в России.

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

3D-печать для чайников. Часть 3: постобработка

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


Доброго времени суток, уважаемые хабражители!


Сим завершаем трилогию постов о 3D-печати для начинающих. Мы уже кратко ознакомились с принципами работы 3D-принтеров, подготовкой и адаптацией моделей, настройками печати и распространенными ошибками. На очереди самое интересное — постобработка.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+29
Комментарии10

Telegram Mini App. Как создать Web App с нуля

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

Mini Apps (или же WebApps) - это относительно новый и удобный способ добавления веб приложения прямо в интерфейсе приложения Telegram. Используя JavaScript, становится возможным создавать бесконечное множество интерфейсов, которые смогут заменить полноценный веб-сайт.

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

И сегодня мы попробуем создать miniapp приложение, взаимодействующее с данными пользователя.

Приступим

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

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

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


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

▍ Если ты (или твоя команда) постоянно стреляешь себе в ногу, то почини ружьё


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

Когда я занимался разработкой для iOS, то использовал CoreData и подписывался на изменения нескольких view. Обратный вызов подписки поступал в тот же поток, из которого было запущено изменение. Иногда это был основной поток, а иногда — фоновый. В разработке для iOS важно то, что вносить изменения в UI можно только в основном потоке, иначе приложение вылетит. Поэтому подписка могла работать нормально, но потом ломалась, когда кто-то запускал изменение из фонового потока или вы позже добавляли обновление UI.

Все без раздумий воспринимали это как что-то само собой разумеющееся, и об этом часто говорили в ревью для новичков в команде. Время от времени кто-нибудь ошибался, и мы добавляли DispatchQueue.main.async, когда видели отчёт о сбое.

Я решил это исправить. У меня ушло десять минут на внесение изменений в слое подписки, теперь подписчики вызывались в основном потоке, что позволило избавиться от целого класса сбоев и сняло с нас часть умственной нагрузки.
Читать дальше →
Всего голосов 45: ↑43 и ↓2+59
Комментарии16

Поверхностный обзор источников по Obsidian

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

Прочитал и посмотрел почти все статьи и видео по Obsidian, которые вышли недавно (в среднем не более 1-2 ух месяцев назад). Дал каждому источнику субъективную оценку и написал короткий комментарий.

Окунуться в субъективный взгляд автора
Всего голосов 24: ↑21 и ↓3+20
Комментарии11

Плохой тайм-менеджмент — официальный спонсор твоих выгораний

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

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

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

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

3D-печать для чайников. Часть 2: Разработка и подготовка моделей для печати

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


Добрый день, дорогие хабражители и мимокрокодилы! Продолжаем статью о 3D-печати для не специалистов, где я делюсь опытом и своими очень ценными (или нет) советами(ссылка на предыдущий гайд).
Этот пост не является рекламой принтера, производителей филаментов или сервисов (хотя хотелось бы). Все приведенное здесь — лишь инициатива и иллюстрации автора. Уж простите за качество иллюстраций. Телефон у меня не очень, да и фотограф из меня так себе.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+23
Комментарии4

Ищем альтернативу Ngrok в России

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

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

Читать далее
Всего голосов 9: ↑6 и ↓3+8
Комментарии21

Управление личными делами в Obsidian (прототип)

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

В статье будет показан прототип системы дел, который реализован в Obsidian. Система в основном будет базироваться на идеях GTD.

Задачи будут создаваться в дневнике/журнале и агрегироваться в отдельных заметках с использованием плагина Tasks.

Система будет адаптирована для телефонов.

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

Задачи и Obsidian? Звучит интересно!
Всего голосов 13: ↑11 и ↓2+11
Комментарии10

Стать программистом: не с нуля не до профи (Flutter и не только)

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

Как найти первую работу в IT? Что нужно знать для этого? На сколько это вообще сложно?

Обо всём по-подробнее здесь.

Читать далее
Всего голосов 9: ↑7 и ↓2+9
Комментарии16

Чиним замедление YouTube на уровне роутера

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

Всех категорический приветствую. Буквально первого августа, прямо в ночь, стал у меня жутко лагать YouTube. Естественно, мне это сильно не понравилось. Ну, что же, давайте разбираться, почему и как это исправить в условиях моей личной сети.

Что случилось?

Хорошо описано произошедшее здесь, на Хабре. Если совсем кратко, своими словами - во время установки SSL соединения в открытом виде домен передается к которому мы подключаемся(так называемое SNI). И если это googlevideo.com то начинают твориться "интересные вещи". Можно проверить это локально коммандами из статьи.

$ curl https://speedtest.selectel.ru/100MB -o/dev/null

Читать далее
Всего голосов 360: ↑357 и ↓3+412
Комментарии1047

Как создать свой стикер пак с помощью нейросети Stable Diffusion

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

Вы знали, что не обязательно быть дизайнером, чтобы создать свой красивый пак стикеров?

Сегодня я поведаю историю создания своего стикерпака из 20+ стикеров с моим персонажем по имени Эвелинн с помощью нейросетей. Вам не понадобится мощная видеокарта и даже Photoshop(в большинстве случаев): я покажу, как сделать всё это прямиком в браузере. Это простой, доступный и бесплатный способ создания уникальных стикеров, справится даже чайник, надеюсь, он уже закипел, приступим!

Читать далее
Всего голосов 32: ↑31 и ↓1+37
Комментарии14

Ускорение работы в терминале

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

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

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

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

Читать далее
Всего голосов 18: ↑14 и ↓4+12
Комментарии80

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

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

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

Когда спрашиваю у людей на собесах, или когда в команде решаем, как клепать очередной проект, такое порой слышу, что становится страшновато. Мне кажется, лет через 5 все компании будут обитать в мультивселенной безумия из “микросервисов”, которую они себе радостно построили, уходя от этих ваших страшных “монолитов”.

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

погрузиться в микросервисы
Всего голосов 236: ↑232 и ↓4+260
Комментарии207

Стоит ли бояться serializable-транзакций больше, чем труднонаходимых багов?

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

В базах данных транзакции обладают свойствами ACID, где «I» означает изоляцию транзакций при одновременном (concurrent) выполнении.

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

Сериализация выполнения транзакций не бесплатна с точки зрения производительности.

Многие СУБД поддерживают более слабые уровни изоляции, оставляя за разработчиком выбор подходящего. В монолитных СУБД более слабый уровень изоляции часто используется по умолчанию. Так, в PostgreSQL и MySQL это «read committed». В распределённых СУБД чаще по умолчанию более строгие уровни: «repeatable read» в YugabyteDB и TiDB, «serializable» в CockroachDB и YDB.

Слабые уровни изоляции могут быть причиной очень труднонаходимых багов. Причём эти баги могут вызвать уязвимости в безопасности.

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

Читать далее
Всего голосов 16: ↑15 и ↓1+16
Комментарии39

ИИ LLama3 без ограничений: локальный запуск, GROQ и интеграция в Телеграм бота с помощью Python

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

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

Сегодня мы:

Научимся устанавливать LLama3 на локальную машину.

Научимся бесплатно запускать LLama3 через платформу GROQ.

Разберемся с преимуществами и недостатками первого и второго способа развертывания LLama3.

Напишем полноценного Telegram бота с использованием aiogram3, который сможет работать как с локальной версией LLAMA3, так и через сервис GROQ (технически он сможет работать с любой подключенной нейросетью).

Запустим Telegram бота на VPS сервере (опционально).

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

Творчество в OpenSCAD: своя мелодия для музыкальной шкатулки

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

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

Читать далее
Всего голосов 29: ↑29 и ↓0+39
Комментарии21
1
23 ...

Информация

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