Pull to refresh
46
0
Сергей Кондрашев @DuDDiTs

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

Send message

Кастомные декораторы в Angular приложениях

Reading time 5 min
Views 2.5K

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

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

Необычный RxJS

Level of difficulty Medium
Reading time 5 min
Views 5.1K

Всем привет! А вы знали, что RxJS содержит в себе более 100 операторов? Но если ваш проект использует эту библиотеку - скорее всего вы с трудом насчитаете у себя больше пары десятков. Интересная ситуация, да? Не знаю почему так получается, но сегодня я хочу поделиться реальными примерами использования “редких” операторов. Приступаем!

Читать далее
Total votes 4: ↑4 and ↓0 +4
Comments 4

Делаю игрулю на Playdate на чистом C. Глава 1

Level of difficulty Medium
Reading time 11 min
Views 9.9K

Не так давно (год назад на самом деле) я приобрёл необычную игровую консоль Playdate.

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

Читать далее
Total votes 21: ↑18 and ↓3 +15
Comments 14

Где бесплатно изучать Rust в 2024

Level of difficulty Easy
Reading time 6 min
Views 23K

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

1. Безопасность: Rust разработан с упором на безопасность, предотвращая многие типичные ошибки программирования, такие как доступ к памяти после ее освобождения или гонки данных. Это особенно важно для разработки критически важных систем, таких как операционные системы или встраиваемые приложения.

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

3. Многопоточность: Rust предоставляет удобные инструменты для разработки многопоточных приложений. Он предлагает безопасные абстракции для работы с потоками и предотвращает гонки данных, что облегчает разработку параллельных программ.

4. Кроссплатформенность: Rust поддерживает различные платформы, включая Windows, Linux, macOS и другие. Это позволяет разрабатывать приложения, которые могут работать на разных операционных системах без необходимости переписывать код.

5. Растущее сообщество: Rust имеет активное и одно из самых быстрорастущих сообщество разработчиков. Это означает, что всегда есть доступ к обновленным библиотекам, учебным материалам и помощи от опытных разработчиков.

6. Востребованность на рынке труда: Rust становится все более популярным среди работодателей, особенно в области разработки системного и встраиваемого программного обеспечения. Умение программировать на Rust может открыть двери к новым возможностям и повысить вашу конкурентоспособность на рынке труда.

Читать далее
Total votes 33: ↑22 and ↓11 +11
Comments 43

Как я решал Advent of Typescript, и что я понял

Reading time 5 min
Views 6.4K

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

В декабре 2023 года впервые проходил Advent of TypeScript — похожее соревнование, но более специфичное, в котором все задачи посвящены написанию типа, согласно условию. В результате решения должен быть написан тип, который что‑то принимает как дженерик параметр, как‑то преобразует этот параметр в другой тип, согласно описанию задания.

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

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

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

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

Читать далее
Total votes 8: ↑8 and ↓0 +8
Comments 4

Боремся с блокировками с помощью Trojan TCP на слабых устройствах c OpenWRT

Level of difficulty Medium
Reading time 8 min
Views 8.6K

В данной статье рассмотрим как:

Настроить обход блокировок с помощью Trojan TCP, tun2socks и bird2 (BGP) на устройствах с 8 Мб ПЗУ и 64 ОЗУ (8/64);

Настроить существующее подключение к OpenVPN серверу, которое могло или может перестать работать, через Trojan TCP туннель (Websocket этой реализацией не поддерживается);

Собрать прошивку с Trojan, kmod-tun, zram и bird2 на базе OpenWRT 21.02.7 для устройств с 8/64.

Читать далее
Total votes 13: ↑13 and ↓0 +13
Comments 13

Мистер Твистер. Впечатления о Twister OS для Raspberry Pi

Level of difficulty Easy
Reading time 8 min
Views 10K

Когда я купил себе Raspberry Pi 400 и водрузил на него Dosbian, я заранее знал, что рано или поздно наиграюсь в «X-Com» и захочу попробовать что-нибудь ещё. Классическую Raspberry Pi OS я уже видел, поэтому душа требовала разнообразия, а пятая точка — приключений. И тут я совершенно случайно наткнулся в сети на упоминание Twister OS — альтернативной операционной системы для «малины» на базе той же Raspbian, но с настраиваемым графическим интерфейсом, который умеет мимикрировать под другие популярные операционки, что может быть важно для людей, непривычных к Linux. Разумеется, я решил попробовать Twister на своём Raspberry Pi и оценить его возможности. Сразу отмечу, что обзор не претендует на техническую глубину — скорее, это впечатления простого пользователя, пытающегося понять, стоит ли тратить время на установку Twister OS, или это баловство, и лучше Raspbian человечество ничего не придумало. Да, предупреждаю сразу: внутри будет много картинок!
Читать дальше →
Total votes 45: ↑44 and ↓1 +43
Comments 11

How to send messages over sockets and create your own messanging protocols in C++

Level of difficulty Medium
Reading time 28 min
Views 3K

Network programming in C++ can be challenging. But even a greater challenge is to find educational content that will arm you with the knowledge on how to apply your networking skills in real applications.

In this article you can learn the basics of socket communication and many ways how you can design your internal messaging protocols.

Read more
Total votes 2: ↑2 and ↓0 +2
Comments 3

О JavaScript и WebAssembly

Level of difficulty Medium
Reading time 5 min
Views 6.8K


Hello world!


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


Хорошо, если вы знаете JS/Node.js и хотя бы слышали о WASM и Rust.

Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Comments 4

Войны битов

Level of difficulty Easy
Reading time 37 min
Views 13K

В своей прошлой публикации я вскользь упомянул так называемые «консольные войны» — битву маркетинговых кампаний конкурирующих видеоигровых платформ прошлого. Это не такое уж малоизвестное явление, о нём написаны книги, сняты фильмы, ему посвящены Youtube-каналы.

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

Будем заниматься странными вещами: подсчётом бит в игровых приставках и попытками найти в этом занятии какой-то глубокий смысл. Открывайте форточки, будет душно!
Читать дальше →
Total votes 90: ↑89 and ↓1 +88
Comments 13

Мягкое знакомство с дополнительным кодом

Level of difficulty Medium
Reading time 9 min
Views 12K

Недавно, общаясь по видеосвязи с другом, я рассказывал ему о своих идеях по реализации нового продукта. В разговоре я упомянул добавление больших знаковых чисел в ассемблере с использованием дополнительного кода, на что получил от собеседника вопрос: «Что такое дополнительный код?» Меня немного удивила его неосведомлённость. Он уже больше 30 лет программирует на Java. Java и Python программисты (а также другие, работающие с языками *с придыханием* вроде Commodore / MicroSoft BASIC) не сталкиваются с нативным типом беззнакового целого числа. В этих языках подобные тонкости реализуются за них.

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

Плюс это всё же наука. Так что давайте разбираться.
Читать дальше →
Total votes 62: ↑60 and ↓2 +58
Comments 18

WebAssembly: короткий обзор ассемблера для фронтенда

Level of difficulty Easy
Reading time 18 min
Views 14K

В последнее время фронтенд все больше и больше обрастает новыми технологиями, одна из них — WebAssembly. На ней можно написать полноценное web‑приложение и почти все на что способна ваша фантазия. В статье мы рассмотрим, что такое WebAssembly, как работает и с чем её едят. И конечно же я хотел поделиться рецептом приложения. Возьмем наш любимый React и добавим Yew, приправим всё это webpack-ом и добавим щепоточку module‑federation. Статья будет интересна всем, кто хочет познакомиться с WebAssembly и добавить разнообразия в список используемых фреймворков и библиотек для написания пользовательских компонентов.

Читать далее
Total votes 46: ↑44 and ↓2 +42
Comments 73

Локальные нейросети. Аналог ChatGPT-3.5 на домашнем ПК: OpenChat 7B превосходящая 70B, DeepSeek для кода уровня ChatGPT

Reading time 8 min
Views 75K

Есть много локальных аналогов ChatGPT, но им не хватает качества, даже 65B модели не могут конкурировать хотя бы с ChatGPT-3.5. И здесь я хочу рассказать про 2 открытые модели, которые всё-таки могут составить такую конкуренцию.

Речь пойдет о OpenChat 7B и DeepSeek Coder. Обе модели за счет размера быстры, можно запускать на CPU, можно запускать локально, можно частично ускорять на GPU (перенося часть слоев на GPU, на сколько хватит видеопамяти) и для такого типа моделей есть графический удобный интерфейс.

И бонусом затронем новую модель для качественного подробного описания фото.

UPD: Добавлена информация для запуска на Windows с ускорением на AMD.

Читать далее
Total votes 107: ↑105 and ↓2 +103
Comments 87

Архитектура серверного рендеринга для SPA

Level of difficulty Easy
Reading time 6 min
Views 5.1K

Серверный рендеринг обеспечивает быстрый и надежный доступ к контенту. В этом подходе веб-страницы формируются на сервере, а не в браузере пользователя. Это позволяет значительно ускорить время загрузки, что особенно критично для современных одностраничных приложений, известных как SPA (Single-Page Applications).

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

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

Читать далее
Total votes 21: ↑14 and ↓7 +7
Comments 3

Произносим термины IT правильно

Level of difficulty Medium
Reading time 3 min
Views 53K

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

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

Читать далее
Total votes 94: ↑79 and ↓15 +64
Comments 229

Как я на психотерапию ходил. И этот опыт помог мне найти жену

Level of difficulty Easy
Reading time 7 min
Views 32K

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

Читать далее
Total votes 110: ↑87 and ↓23 +64
Comments 260

Как облегчить изучение английского: 5 полезных сервисов

Reading time 2 min
Views 22K


Привет, Хабр! В последние пару лет я увлекся изучением английского языка и периодически пробую различные новые сервисы. В сегодняшнем топике я поделюсь список из пяти новых приложений и сайтов, которые помогают улучшить навыки устного общения, расширить словарный запас, освоить грамматику и повысить качество письменного английского.
Читать дальше →
Total votes 22: ↑19 and ↓3 +16
Comments 14

Как живут фрилансеры: из разработчика в технического копирайтера

Reading time 6 min
Views 13K

image

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


На десятом выпуске ребята закрыли формат «10 вопросов программисту». Мы в команде Фрилансим сначала расстроились, а потом решили подхватить идею с их разрешения. Открываем новый сезон, в котором будем выяснять, как и чем живут фрилансеры.

Читать дальше →
Total votes 37: ↑34 and ↓3 +31
Comments 12

10 смертных грехов спикера

Reading time 4 min
Views 27K


Прелюдия


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

Читать дальше →
Total votes 61: ↑51 and ↓10 +41
Comments 70

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity