Обновить
4
0

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

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

Это просто бомба-2. Li-Ion — как не взлететь

Время на прочтение14 мин
Охват и читатели131K

За последний десяток лет литий-ионные аккумуляторы из дорогостоящей экзотики перешли в разряд самых распространенных источников автономного питания. Неудивительно, что они стали популярными и в руках самодельщиков, в том числе и начинающих. Иногда от технических решений в их творениях волосы становятся дыбом – ведь особенностью аккумуляторов данного типа является их повышенная опасность, в первую очередь – пожарная. Мой рассказ о том, как правильно «готовить» эту «рыбу фугу», чтобы никто не сгорел и не взорвался.

Читать далее

Ультимативный список инструментов для разработчиков и опытных пользователей для Windows

Время на прочтение6 мин
Охват и читатели81K
Можете ли вы поверить, что с момента моего последнего списка инструментов прошло 6 лет? Инструменты изменились, многие из них доступны онлайн, но, честно говоря, для составления нового списка инструментов требуется ОЧЕНЬ МНОГО РАБОТЫ. Но я смог, вот список на 2020-2021 годы. Это инструменты в моей папке Utils. Я создал папку d:\dropbox\utils и добавил ее в свой PATH. Таким образом, он будет на всех моих компьютерах, и я могу мгновенно добраться до любого из них.

Это обновленный до версии 2020-21 мой список 2003, 2005, 2006, 2007, 2009, 2011 и 2014 годов, который в настоящее время включает все остальные мои списки. Я занимаюсь этим более 17 лет. Вау. Думаю, стоит тратить на это больше времени.

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

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

Эту статью написал наш коллега Скотт. Вот версия на английском. Ну а сам список под катом.

Читать дальше →

Принцип слоеного теста

Время на прочтение12 мин
Охват и читатели6.4K
Всем неустрашимым на пути от отрицания до убеждения посвящается…

image

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

С чего начинается Elasticsearch

Время на прочтение14 мин
Охват и читатели390K

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


Самое первое и главное заблуждение — "нужен поиск, так бери эластик!". Но в действительности, если вам нужен шустрый поиск для небольшого или даже вполне себе крупного проекта, вам стоит разобраться в теме поподробней и вы откажетесь от использования именно этой системы.

Читать дальше →

Бытовая форензика: можно ли найти утечку с помощью бубна, удобрений и палок?

Время на прочтение7 мин
Охват и читатели9.1K


Порой айтишникам приходится решать не совсем обычные задачи. На днях знакомый админ поведал мне о том, что на фоне обычной офисной рутины руководство поручило ему на время превратиться в Шерлока Холмса, в связи с чем он срочно ищет себе в помощники доктора Ватсона. На волне коронавирусной пандемии и локдауна компания провела ряд вынужденных сокращений, и кому-то из уволенных сотрудников это явно не понравилось. Неизвестные слили в паблик данные, которые никак не должны были туда попасть. Руководство поставило задачу выяснить, кто из «бывших» совершил такую пакость и подлость. Каким образом? Придумай сам, тыжпрограммист. Профессиональным исследователем киберинцидентов, понятное дело, никто из участников процесса не являлся даже близко.
Читать дальше →

Отладка Makefile /часть 1/

Время на прочтение11 мин
Охват и читатели25K

Отладка makefile - это что-то из черной магии. К несчастью, не существует такой вещи как makefile отладчик, чтобы изучить ход выполнения конкретного правила или как разворачивается переменная. Большую часть отладки можно выполнить с помощью обычных print’ов и проверкой makefile. Конечно, GNU make немного помогает своими встроенными методами и опциями командной строки. Один из лучших методов отладки makefile это добавить отладочные перехваты (hooks) и использовать техники безопасного программирования, на которые можно будет опереться, когда дела пойдут совсем плохо. Далее представлено несколько основных техник отладки и практик безопасного программирования, которые будут, на мой взгляд, наиболее полезными.

Дай две!

Агрегаты, мои агрегаты, как приятно о вас думать

Время на прочтение7 мин
Охват и читатели39K

В Domain-Driven Design выделяют стратегические и тактические паттерны. Например, первые — это Единый язык, а вторые — Агрегаты. Я много раз слышал от коллег, что со стратегией всё понятно, но когда дело доходит до перехода на тактический уровень (до кода) — всё в тумане. Это приводит к некорректным техническим решениям, которые не могут компенсировать даже правильный настрой и близость к бизнесу. Для успеха проекта крайне важно освоить тактические паттерны, особенно Агрегаты. Всё потому, что Агрегаты инкапсулируют в себя почти всю бизнес-логику, это основа вашего приложения. В этой статье я и расскажу про Агрегаты, как они могут помочь и почему важно их освоить. Но...

...сперва антипаттерны

Как мы заставили код, портированный с C#, работать с моделью памяти C++

Время на прочтение19 мин
Охват и читатели8.1K
Привет, Хабр. В прошлой статье я рассказывал о том, как мы создали фреймворк для перевода кода C# на (неуправляемый) C++, чтобы выпускать свои библиотеки, изначально разработанные для платформы .Net, и под C++ тоже. В этой статье я расскажу о том, как нам удалось согласовать модели памяти этих двух языков, добившись работы портированного кода в необычном для него окружении.

Я расскажу о том, какие умные указатели мы используем, и почему нам пришлось разработать для них собственные реализации. Я также расскажу о процессе подготовки кода C# к портированию с точки зрения управления временем жизни объектов, о некоторых проблемах, с которыми мы столкнулись, и о специфических способах диагностики, которыми нам приходится пользоваться при работе.
Читать дальше →

Jupyter для .NET. «Как в питоне»

Время на прочтение3 мин
Охват и читатели9.9K
Несколько месяцев назад Microsoft рассказали о Jupyter в .NET. Но активности по этому топику очень мало, а ведь тема очень интересная. Но что такое прикольное придумать? Я решил сделать удобный вывод класса Entity из библиотеки символьной алгебры:



Выглядит круче, чем в питоне. Делается просто, доставляет массу удовольствия. Приглашаю под кат!
Читать дальше →

Готовим console.log() правильно

Время на прочтение7 мин
Охват и читатели21K
Специально к старту нового потока курса «Frontend-разработчик» делимся с вами полезным переводом. Автор рассказывает, как использует методы логирования в производственной среде собственного проекта и в чём именно они помогают. Кроме того, нас знакомят с платформой AppSignal, созданной, чтобы напрямую уведомлять разработчика о возникающих у пользователя исключениях в приложении. Подробности под катом.

Приятного чтения!

Работа с файлами в C++ с использованием Boost

Время на прочтение9 мин
Охват и читатели46K
Привет! Я время от времени рассказываю на Хабре о решениях распространённых задач на C++ и вообще люблю делиться опытом. Поэтому даже написал целую книгу, которая называется «Разработка приложений на С++ с использованием Boost». Она может быть интересна разработчикам, которые уже немного знакомы со стандартной библиотекой языка, хотят глубже изучить Boost, упростить и повысить качество разработки приложений. Уверен, что информация, которую я собрал в книге, будет полезна — всё больше библиотек Boost становятся частью стандарта. Сегодня предлагаю прочитать главу, посвящённую работе с файлами. В ней я рассказываю о перечислении файлов в каталоге, стирании и создании файлов и каталогов, а также о самом быстром способе чтения. Надеюсь, будет интересно. И, пожалуйста, не забывайте делиться впечатлениями в комментариях.

UPD: добавил в конец поста бонус для читателей Хабра.
Читать дальше →

Основы оптимального стиля. Когнитивно-ориентированный анализ удобочитаемости текста программы

Время на прочтение34 мин
Охват и читатели8.5K

epam


Грубо говоря, очевидно, что некоторые виды форматирования лучше других.
— Стив Макконелл, Совершенный код.


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

Читать дальше →

Windows: достучаться до железа

Время на прочтение11 мин
Охват и читатели61K

Меня всегда интересовало низкоуровневое программирование – общаться напрямую с оборудованием, жонглировать регистрами, детально разбираться как что устроено... Увы, современные операционные системы максимально изолируют железо от пользователя, и просто так в физическую память или регистры устройств что-то записать нельзя. Точнее я так думал, а на самом деле оказалось, что чуть ли не каждый производитель железа так делает!

Читать далее

Анализатор C++ на первом курсе: миф, иллюзия или выдумка?

Время на прочтение13 мин
Охват и читатели11K
Для программистов настали тяжёлые времена. Хотя Утечка Памяти была уничтожена valgrind-ом, оставшиеся силы UB преследовали программистов по всей галактике.

Избегая встречи с грозными знаковыми переполнениями, группа борцов за свободу, ведомая Кириллом Бриллиантовым, Глебом Соловьевым и Денисом Лочмелисом, обустроила новый секретный репозиторий.

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


Мы — трое студентов бакалавриата «Прикладная математика и информатика» в Питерской Вышке. В качестве учебного проекта во втором полугодии мы решили написать UB-tester — анализатор кода на С++.


Читать дальше →

Как подружить .NET и IDA Pro (о дружбе C# и C++)

Время на прочтение6 мин
Охват и читатели7.9K


Приветствую,


Сначала о проблеме/задаче:
Начав писать очередной плагин-отладчик для ретро-платформы под IDA Pro (по секрету: это будет SNES), я столкнулся со следующим набором, который требовалось подружить:


  1. Ядро эмулятора написано на C++ и компилируется в DLL
  2. GUI эмулятора написано на C# и использует DLL-ку ядра для управления эмуляцией
  3. IDA Pro, которая использует плагины либо на питоне, либо на C++ в виде DLL (а отладчики только на C++)
Читать дальше →

Кодинг без рук: что делать, если лишился своего основного рабочего инструмента

Время на прочтение9 мин
Охват и читатели45K


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

Как можно понять, это достаточно серьёзная проблема: я разработчик ПО, и вся моя карьера зависит от возможности пользования клавиатурой!

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

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

Творческое использование методов расширения в C#

Время на прочтение5 мин
Охват и читатели14K
Привет, Хабр!

Продолжая исследование темы C#, мы перевели для вас следующую небольшую статью, касающуюся оригинального использования extension methods. Рекомендуем обратить особое внимание на последний раздел, касающийся интерфейсов, а также на профиль автора.


Читать дальше →

Ленивая инициализация в C#

Время на прочтение4 мин
Охват и читатели39K
Отложенная инициализация или «ленивая» инициализация — это способ доступа к объекту, скрывающий за собой механизм, позволяющий отложить создание этого объекта до момента первого обращения. Необходимость ленивой инициализации может возникнуть по разным причинам: начиная от желания снизить нагрузку при старте приложения и заканчивая оптимизацией редко используемого функционала. И действительно, не все функции приложения используются всегда и, тем более, сразу, потому создание объектов, реализующих их, вполне рационально отложить до лучших времён. Я хотел бы рассмотреть варианты ленивой инициализации, доступные в языке C#.
Читать дальше →

Разбираемся в моделях кода архитектуры x64

Время на прочтение19 мин
Охват и читатели11K
«Какой моделью кода мне воспользоваться?» — часто возникающий, но нечасто разбираемый вопрос при написании кода для архитектуры х64. Тем не менее, это довольно интересная проблема, и для понимания генерируемого компиляторами машинного кода х64 полезно иметь представление о моделях кода. Кроме того, для тех, кто беспокоится о производительности вплоть до мельчайших команд, выбор модели кода влияет и на оптимизацию.

Информация по этой теме в сети, или где бы то ни было еще, встречается редко. Самым важным из доступных ресурсов является официальный х64 ABI, скачать его можно по ссылке (далее по тексту он будет упоминаться как «ABI»). Часть информации также можно найти на man-страницах gcc. Задача данной статьи — предоставить доступные рекомендации по теме, обсудить связанные с ней вопросы, а так же хорошими примерами через используемый в работе код продемонстрировать некоторые концепты.

Важное замечание: эта статья не является обучающим материалом для начинающих. Перед ознакомлением рекомендуется уверенное владение C и ассемблером, а так же базовое знакомство с архитектурой х64.
Читать дальше →

Я провёл более 600 технических интервью — и вот пять проблемных мест, которые я заметил у кандидатов

Время на прочтение9 мин
Охват и читатели50K
Недавно я провёл 600-е собеседование на interviewing.io (IIO). Хотелось бы поделиться опытом, рассказать, как я подхожу к интервью, и пролить свет на типичные проблемы у кандидатов. Каждый интервьюер на IIO индивидуален, поэтому ваши результаты могут отличаться. У нас на платформе сформировалось замечательное сообщество, где каждый работает над улучшением своих знаний, навыков и результатов интервью.

Пробное интервью на interviewing.io


Мы оцениваем людей по трём четырёхбалльным шкалам. Оценка «один» означает плохой результат, а «четыре» — очень хороший. Я обычно вначале даю кандидату три балла, а затем прибавляю/отнимаю очки по мере интервью.

Каждый интервьюер отдаёт предпочтение какому-то одному аспекту. Лично я проявляю некоторую предвзятость в сторону скиллов «общение» («коммуникация») и «решение проблем», которые мы обсудим ниже.
Читать дальше →

Информация

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