Pull to refresh
0
0
Send message

Малоизвестные и интересные особенности C и C++

Level of difficultyMedium
Reading time43 min
Views47K

В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.

Целью статьи является не освещение какой-то конкретной особенности языка или подготовка к собеседованиям, и уж тем более нет цели рассказать все потайные смыслы языка, т. к. для этого не хватит одной статьи и даже книги. Напротив, статья нужна для того, чтобы показать малоизвестные и странные решения, принятые в языках C и C++. Своего рода солянка из фактов. Вопрос “что делать с этими знаниями?” я оставляю читателю.

Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.

Читать далее
Total votes 127: ↑126 and ↓1+159
Comments61

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

Reading time8 min
Views86K

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

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

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

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

Читать далее
Total votes 88: ↑86 and ↓2+102
Comments87

Где в Москве жить «неплохо»

Level of difficultyEasy
Reading time5 min
Views29K

В одной прошлых публикации получил массу полезных коментариев от читателей. Среди них просили для Москвы кроме "плохих" районов было бы интересно увидеть и хорошие.

Честно скажу, что определить какие хорошие непросто. Ведь у каждого свое понятие о том что такое хорошо и нужен доступ к данным, которого у нас нет. Поэтому давайте посмотрим где жить "неплохо". Не жить рядом с тем, что влияет на качество воздуха, уровень шума, ежедневное memento mori, близость к промышленности, безопасность. Найдем группы домов в Москве в пределах МКАД, отдаленные на 150м от перечисленных факторов. Если живете в Москве, то удивитесь - вашего дома скорее всего не будет на этой карте

Читать далее
Total votes 25: ↑23 and ↓2+29
Comments209

Недетский пиксель-арт. Конструкторы для тех, кто вырос, но не повзрослел

Level of difficultyEasy
Reading time3 min
Views11K
Одним из первых компьютеров у меня, как и у многих на Хабре, был ZX Spectrum.

На особенно скучных уроках в школе я доставал тетрадку в клеточку, и рисовал спрайты для своих будущих игр. Изредка копировал любимых персонажей из игрушек — Dizzy, Bomb Jack, Renegade.

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

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


Пример готового набора Lego

Появились конструкторы, которые создатели позиционируют, как «бесконечные». Один из таких я купил, но в итоге использовал для черно-белых картин по 8-битным играм.
Читать дальше →
Total votes 41: ↑37 and ↓4+41
Comments12

Многопоточность и Thread Pool в C++

Level of difficultyEasy
Reading time18 min
Views34K

Привет, Хабр! Я неожиданно созрел для написания первой статьи тут. За время работы в сфере IT у меня появилась своя собственная библиотека на языке C++, которая медленно, но верно обрастает различными полезными модулями. Не все включаемые в нее модули написаны мною с нуля, но я всегда стараюсь так или иначе адаптировать их под свои нужды. Сегодня у меня появилось непреодолимое желание поделиться с вами некоторыми фрагментами моей библиотеки.

Читать далее
Total votes 7: ↑5 and ↓2+6
Comments12

Глобальная блокировка интерпретатора (GIL) и её воздействие на многопоточность в Python

Reading time34 min
Views53K

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

Как вы, наверное, знаете, глобальная блокировка интерпретатора (GIL, Global Interpreter Lock) — это механизм, обеспечивающий, при использовании интерпретатора CPython, безопасную работу с потоками. Но из-за GIL в конкретный момент времени выполнять байт-код Python может лишь один поток операционной системы. В результате нельзя ускорить Python-код, интенсивно использующий ресурсы процессора, распределив вычислительную нагрузку по нескольким потокам. Негативное влияние GIL на производительность Python-программ, правда, на этом не заканчивается. Так, GIL создаёт дополнительную нагрузку на систему. Это замедляет многопоточные программы и, что выглядит достаточно неожиданно, может даже оказать влияние на потоки, производительность которых ограничена подсистемой ввода/вывода.

Здесь я опираюсь на особенности CPython 3.9. По мере развития CPython некоторые детали реализации GIL, определённо, изменятся. Материал опубликован 22 сентября 2021 года, после публикации в него внесено несколько дополнений.

Читать далее
Total votes 44: ↑41 and ↓3+57
Comments12

Как использовать Midjourney с умом

Level of difficultyEasy
Reading time10 min
Views21K

Мне довелось познакомиться с нейросетями совсем недавно. На работе дали задание — найти подходящую бесплатную картинку для сайта. В первую очередь, я вспомнил про Crayion (Бывший DALL-E), но качество результата на нем совсем меня не удивило. После этого я вспомнил о существовании Midjourney и о том, что разработчики предоставляют пробный доступ в Discord. Я подключился к серверу и сделал свою первую картинку. Результат был сногсшибательным.

Читать далее
Total votes 16: ↑14 and ↓2+16
Comments16

Call Stack Logger — инструментирование функций как способ отслеживания потока выполнения программы

Reading time14 min
Views3.9K

Доводилось ли вам когда-нибудь работать над C++ проектом с такой огромной кодовой базой, что понимание того, что на самом деле происходит во время выполнения программы, требует кучи времени и сил? Откуда и какие функции вызываются? Вам когда-нибудь поручали исправить баг в таком проекте, прилагая лишь логи, которые приближают вас к нахождению первопричины проблемы так же, как Моисей к земле обетованной? А попытки воспроизведения бага не дают вам никакой полезной информации? Если ваш ответ да – пожалуйста, присаживайтесь поудобнее.

Читать далее
Total votes 11: ↑9 and ↓2+9
Comments3

Премиальные тарифы банков в 2023 году. Большой обзор

Reading time11 min
Views46K

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

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

Из-за специфики своих долгосрочных планов на жизнь (FI/RE, но статья не об этом), у меня накапливаются крупные остатки, и было бы глупо не получать дополнительные опции от банков. На горизонте до года передо мной возникает дилемма: либо продолжать использовать уже имеющийся банк (наращивая остаток в нем для получения все больших опций), либо искать ещё один, третий — для получения новых "плюшек".

Изначально я планировал оценить премиальные условия 5 крупнейших (и наиболее знакомых мне) банков. Но подписчики моего скромного блога посоветовали обратить внимание ещё на 3 банка — из-за весьма привлекательных фишек, которые могут их выделить на фоне остальных. В первом блоке я расскажу о собственных критериях оценки и своей системе присуждения очков, во втором блоке кратко пройдусь по особенностям каждого из 8 банков, а в заключении представлю общий рейтинг с выявленными лидерами.

Читать далее
Total votes 17: ↑10 and ↓7+7
Comments48

Исторические исходные коды, с которыми должен быть знаком каждый разработчик

Level of difficultyEasy
Reading time6 min
Views26K

Как и любая другая индустрия, сфера компьютерных технологий прошла внушительный путь развития. Благодаря упорной работе программистов прошлого сегодня мы пользуемся высококлассными компьютерами, высококачественными современными графическими интерфейсами, дружелюбными языками программирования и футуристическими веб‑приложениями в реальном времени. Изучение истории приносит удовольствие — весьма интересно наблюдать за поступательным развитием технологий с течением времени. Только подумайте, скольких трудов стоило создать современный самолет — люди прошли огромный путь от одной лишь идеи полета до настоящих летательных аппаратов. Точно так же компьютеры прошли путь от дорогостоящих машин размером с целую комнату до современных и (относительно) недорогих устройств общего назначения.

Читать далее
Total votes 42: ↑32 and ↓10+30
Comments14

Записывая каждую покупку, я узнал, что трачу за год 1,67 млн рублей. И вот как мне это помогло в планировании финансов

Reading time11 min
Views14K

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

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

Читать далее
Total votes 38: ↑29 and ↓9+21
Comments52

История покупки одной видеокарты — NewEgg, Криптовалюта, Почта Global и Таможня

Reading time10 min
Views12K

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

Итак, погнали...

Читать далее
Total votes 27: ↑26 and ↓1+31
Comments18

Сервис для оперативной оценки стоимости своих навыков на рынке труда

Reading time2 min
Views12K

Уважаемые читатели, хочу представить Вашему вниманию свой небольшой проект https://sugar-beet.herokuapp.com/, который является воплощением идеи описанной в своей предыдущей статье Сколько ты стоишь? Метод анализа вакансий с HR-агрегаторов. Стадию развитию его можно определить как MVP. Однако, к сожалению, Heroku отказывается от бесплатного тарифа 28 ноября 2022 года, что печально. Собственно выкладываю текущую версию на всеобщее обозрение, через 2 месяца она всё равно "превратится в тыкву". Приветствую всех заинтересовавшихся.

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments11

Удалённый доступ к Linux-десктопу. Лучшие RDP-серверы и клиенты 2022 года

Reading time6 min
Views117K

Что делать, если нужно получить удалённый доступ к серверу или десктопу Linux? Или подключиться к Windows-машине с Linux-десктопа? Какие клиенты RDP и FTP подходят лучше всего под Debian и Red Hat / CentOS? Интересно посмотреть, что нового появилось в последнее время.
Читать дальше →
Total votes 32: ↑31 and ↓1+44
Comments35

Топ 20 ошибок при работе с многопоточностью на С++ и способы избежать их

Reading time21 min
Views78K
Привет, Хабр! Предлагаю вашему вниманию перевод статьи «Top 20 C++ multithreading mistakes and how to avoid them» автора Deb Haldar.


Сцена из фильма «Петля времени» (2012)

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

В этой статье я попытался категоризировать все известные мне ошибки с возможными решениями. Если вам известны еще какие-то подводные камни, либо имеете предложения по решению описанных ошибок– пожалуйста, оставляйте свои комментарии под статьей.
Читать дальше →
Total votes 62: ↑60 and ↓2+58
Comments94

Семантика копирования и управление ресурсами в C++

Reading time28 min
Views53K

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



Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments83

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

Reading time9 min
Views131K

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


Вам также может быть интересна статья Десять возможностей C++11, которые должен использовать каждый C++ разработчик
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments52

Шпаргалка по аббревиатурам C++ и не только. Часть 2: «и не только»

Reading time17 min
Views12K
Это вторая и последняя часть моей шпаргалки по аббревиатурам, которые стоит знать C++ разработчику. С++ здесь упомянут только потому, что шпаргалку я составил в первую очередь для себя, а я как раз-таки C++ разработчик.

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


Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments3

Так все же, насколько быстры каналы в Linux?

Reading time26 min
Views22K

В этом посте будет проанализировано, как каналы Unix реализуются в Linux. Для этого мы напишем и в несколько итераций оптимизируем тестовую программу, которая записывает и считывает данные через канал.  

Читать далее
Total votes 77: ↑72 and ↓5+86
Comments31

Information

Rating
Does not participate
Registered
Activity